2013-02-17 75 views
0

我正在为我的自定义模板系统创建一个outcomment preg_replace函数。Preg_replace for/* ... */

我曾尝试以下:

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

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

但我不知道,我很明白的preg_replace工作的方式。

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

+1

你需要躲避分隔符(这里'/')你的格局里面还有'*'。 – Gumbo 2013-02-17 11:40:28

回答

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

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

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

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

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

希望帮助。

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