我正在尝试为自定义模板系统创建一个outgment preg_replace函数。
我尝试了以下内容:
// Outcomment
$pattern[] = "//*(.*?)/*/is";
$replace[] = "";
$content = preg_replace($pattern, $replace, $content);
但我不确定我是否完全理解preg_replace的工作方式。
我正在尝试删除/*
和*/
之间的所有内容。
答案 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"
希望有所帮助。
最后,请注意,如果您的评论被允许嵌套,则此表达式将失败 - 即评论中的评论。这会使很多难以匹配。