我一直在這裏停留一段時間。PHP刪除標題標籤內的所有段落標籤
我有這個字符串(有前後H2標籤更多內容):
...<h2 style='line-height: 44px;'><p>Lorem Ipsum</p></h2>...
什麼正則表達式做我用它來刪除所有< P>和</p>標記的標題標籤內?
我試圖做這樣的事情,但正回顧後一個不工作:
// for the starting <p> tag
$str = preg_replace('/(?<=<h[1-6]{1}[^>]+>)\s*<p>/i', '', $str);
// for the ending </p> tag
$str = preg_replace('/<\/p>\s*(?=<\/h[1-6]{1}>\s*)/i', '', $str);
這不考慮段落標記深< H2內的文本里面>標籤
[更新]
這是從PeeHaa建議的環節之一衍生
// for the starting <p> tag
$str = preg_replace("#(<h[1-6].*?>)<p.*?>#", '$1', $str);
// for the ending </p> tag
$str = preg_replace("#<\/p>(<\/h[1-6]>)#", '$1', $str);
_Don't_使用正則表達式,處理HTML。爲此,請使用解析器,如DOM。 – KingCrunch
是的,我知道DOM是理想的,但對於這個例子,我沒有選擇在PHP中這樣做。此外,這裏的段落標籤會自動添加(WordPress),所以它們總是像這樣,我需要刪除它們。 –
PHP也知道DOM(以及其他一些XML解析器);) – KingCrunch