htmlspecialchars()或者urlencode()试试

解决方案 »

  1.   

    $str=preg_replace_callback("/\[XXX\](.+?)\[\/XXX\]/i",create_function('$matches','return "<a href=goto.php?p=".urlencode($matches[1]).">".$matches[1]."</a>";'),$str);
      

  2.   

    <?php
    echo urlencode('+ &');
    $Str = <<< TEXT
    [XXX]TEST[/XXX]
    [XXX]test1 test2[/XXX]
    [XXX]test1&test2[/XXX]
    TEXT;function foo($v) {
      return "<a href=goto.php?p=".urlencode($v).">$v</a>";
    }
    $Str=preg_replace("#\[XXX\](.+?)\[/XXX\]#ie","foo('\\1')",$Str);echo $Str;
    ?> 
    <a href=goto.php?p=TEST>TEST</a>
    <a href=goto.php?p=test1+test2>test1 test2</a>
    <a href=goto.php?p=test1%26test2>test1&test2</a> 
      

  3.   

    楼主以前不是开发过一个PHP编辑器吗?不再继续了?
      

  4.   

    那个PHP编辑器遇到了一个难以解决的问题,不过主要还是时间的问题,最近一直出差,没有太多的时间,但我还是会做下去的。