$a="[table align=left width=100%]……[/table]
[table]……[/table]";
$a=str_replace("[","<",$a);
$a=str_replace("]",">",$a);
$a=str_replace("[/","</",$a);
echo $a;
显示
<table align=left width=100%>……</table>
<table>……</table>

解决方案 »

  1.   

    $str = "[table align=left width=100%]……[/table]
    [table]……[/table]";$pat[] = "/\[table(.*)\](.+)\[\/table\]/";
    $rpl[] = "<table\\1>\\2</table>";$joketext = preg_replace($pat, $rpl, $str);
    echo $joketext;\\1、\\2、\\3...分别对应正则表达式中“()”的出现
      

  2.   

    '.'可以替代任何字符,而'*'表示“没有或更多”。那为什么第一个$pat[]里面用(.*)两个,直接用一个*不就可以了?
    另外,为什么开始结束要加上/呢?
      

  3.   

    另外,可以运行。不过"/\[td(.*)\](.+)\[\/td\]/"这个后面的[/td]会被转换成[/td>,其他的<td><tr><table></table></tr>都没有这个问题?请问是为什么?