2011-11-09 44 views
1

我試圖取代兩個標籤的preg_replace標籤問題

</th> 
</tr> 

</th> 
</tr> 
</thead> 

我覺得標記之間的換行符防止更換從以下工作:

$str = preg_replace('/(<\/th>)+(\/tr)/i', '</th></tr></thead>', $str); 

有什麼建議嗎?

+0

我的建議是,你不使用正則表達式來做到這一點,而是一個HTML解析器。另外,檢查你的正則表達式,看起來你已經錯過了那裏的一個或其他角色。 – hakre

+1

使用'/ s'而不是'/ i' .. – Rikesh

+0

有時候HTML解析器是一個很好的選擇,但如果它很小,也許這不是一個好主意...... –

回答

1

這是正則表達式的解決方案:

$str = preg_replace('/<\/th>\s*<\/tr>/i', '</th></tr></thead>', $str); 

注意,\s*匹配任何空白和你錯過/tr周圍<>

如上所述,HTML/DOM解析器可能更適合您想要做的事情。