其实严格来说这样匹配是有BUG的$str = "<a href='index.php' title='\">\" is great than'>move</a>";
echo preg_replace("/\<(.+?)\>/is","",$str);这样的代码就无法正常替换

解决方案 »

  1.   

    搞错啦,楼上的没有把你将echo preg_replace("/\<(.+?)\>/is","",$str);
    改成
    $str = preg_replace("/\<(.+?)\>/is","",$str);
    echo $str;看一下
      

  2.   

    要是只是去html tag的话,用strip_tags 就行了。
      

  3.   

    CXX. Perl 兼容正则表达式函数 -> 模式语法
     默认时,数量符是“贪吃型”(greedy)的,即会在不导致剩余模式失败的情况下尽可能多地匹配(直到所允许的数目上限)。这会出问题的经典例子是尝试匹配 C 语言的注释。在 /* 和 */ 序列中间,可能会出现单个的 * 和 / 字符。对 C 注释如果试图用 /\*.*\*/ 去和字符串 /* first comment */ not comment /* second comment */ 匹配会失败,因为由于 .* 项目的贪吃性,会匹配成整个字符串。 不过,如果在后面加一个问号数量符,则会停止贪吃性,而变成匹配尽可能少的数目,因此模式 /\*.*?\*/ 就会正确匹配 C 注释。各种数量符的含义并没有改变,只是优先的匹配数目。不要将问号的此用法和其自己作为数量符的使用混淆。因为有两种用法,有时可以两个一起出现,例如 \d??\d 会优先匹配一个数字,但如别无选择也可以匹配两个以使剩余模式匹配。