preg_replace for / * ... * /

时间:2013-02-17 11:34:38

标签: php preg-replace

我正在尝试为自定义模板系统创建一个outgment preg_replace函数。

我尝试了以下内容:

// Outcomment
$pattern[] = "//*(.*?)/*/is";
$replace[] = "";

$content = preg_replace($pattern, $replace, $content);

但我不确定我是否完全理解preg_replace的工作方式。

我正在尝试删除/**/之间的所有内容。

2 个答案:

答案 0 :(得分:2)

试试这个:

$str = "Hello my name /* some comment */ is PHP /* and this comment*/ " ;       
$clean = preg_replace("/\/\*(.*?)\*\//", "", $str) ;

echo $clean ; //Outputs Hello my name is PHP

答案 1 :(得分:1)

首先,即使没有考虑转义,你在表达式的两端都有/*,所以最后一个是错误的方法。

其次,/*都是正则表达式的特殊字符,需要使用前面的反斜杠进行转义。

所以你的表达最终看起来像这样:

"/\/\*(.*?)\*\//is"
希望有所帮助。

最后,请注意,如果您的评论被允许嵌套,则此表达式将失败 - 即评论中的评论。这会使很多难以匹配。