0

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

我尝试了以下方法:

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

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

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

我正在尝试这样做,以便删除/*和之间的所有内容。*/

4

2 回答 2

2

试试这个:

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

echo $clean ; //Outputs Hello my name is PHP
于 2013-02-17T11:44:36.117 回答
1

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

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

所以你的表达最终会是这样的:

"/\/\*(.*?)\*\//is"

希望有帮助。

最后,请注意,如果您的评论被允许嵌套,则此表达式将失败——即评论中的评论。这将使匹配变得更加困难

于 2013-02-17T11:41:45.327 回答