2013-02-17 24 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" 

希望幫助。

最後,請注意,如果允許您的評論嵌套 - 即評論中的評論,則此表達式將失敗。這會讓太多難以匹配。