我正在尝试为我的自定义模板系统创建一个结果 preg_replace 函数。
我尝试了以下方法:
// Outcomment
$pattern[] = "//*(.*?)/*/is";
$replace[] = "";
$content = preg_replace($pattern, $replace, $content);
但我不确定我是否完全理解 preg_replace 的工作方式。
我正在尝试这样做,以便删除/*
和之间的所有内容。*/
我正在尝试为我的自定义模板系统创建一个结果 preg_replace 函数。
我尝试了以下方法:
// Outcomment
$pattern[] = "//*(.*?)/*/is";
$replace[] = "";
$content = preg_replace($pattern, $replace, $content);
但我不确定我是否完全理解 preg_replace 的工作方式。
我正在尝试这样做,以便删除/*
和之间的所有内容。*/
试试这个:
$str = "Hello my name /* some comment */ is PHP /* and this comment*/ " ;
$clean = preg_replace("/\/\*(.*?)\*\//", "", $str) ;
echo $clean ; //Outputs Hello my name is PHP
首先,即使不考虑转义,你/*
在表达式的两端都有,所以最后的那个是错误的。
其次,/
和*
都是正则表达式的特殊字符,需要用前面的反斜杠进行转义。
所以你的表达最终会是这样的:
"/\/\*(.*?)\*\//is"
希望有帮助。
最后,请注意,如果您的评论被允许嵌套,则此表达式将失败——即评论中的评论。这将使匹配变得更加困难。