2010-06-20 95 views
0

此功能不起作用:的PHP的preg_replace

function remove_ul($ul) { 
    $ul = preg_replace('/<ul id="general-nav">/', '<ul class="nav">', $ul, 1); 
    $ul = preg_replace('/</ul>/', '<li class="blank"></li></ul>', $ul, 1); 
    return $ul; 
} 

我想是因爲與</ul>

任何想法就行重複/的?

謝謝。

+0

閱讀[分隔符](http://www.php.net/manual/en/regexp.reference.delimiters.php)。 – 2010-06-20 16:02:29

+0

感謝您的鏈接 – Happy 2010-06-20 16:03:28

回答

4

嘗試更換此:

$ul = preg_replace('/</ul>/', '<li class="blank"></li></ul>', $ul, 1); 

有:

$ul = preg_replace('/<\/ul>/', '<li class="blank"></li></ul>', $ul, 1); 

或者試試:

$ul = preg_replace('#</ul>#', '<li class="blank"></li></ul>', $ul, 1); 

因爲在你的代碼,您所指定使用</ul>分隔符/然後,有衝突,你需要逃避分隔符與\或使用#作爲分隔符。

1

在第二個表達式(/<\/ul>/)中轉義斜槓。如果您的查詢變得更加複雜,您可能還必須使用捕獲組(括號)。

哦,用正則表達式解析html是邪惡的。在此之前,XHTML正則表達式的流行趨勢風暴這篇文章。 :)