我刪除HTML標記的第一次出現在字符串preg_replace
爲如何獲取preg_replace中的匹配子字符串?
$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1);
我怎樣才能刪除的子保存爲一個新的字符串:
$deleted = '<p>...</p>';
我刪除HTML標記的第一次出現在字符串preg_replace
爲如何獲取preg_replace中的匹配子字符串?
$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1);
我怎樣才能刪除的子保存爲一個新的字符串:
$deleted = '<p>...</p>';
,讓你可以使用子preg_match():
preg_match('#<p>(.*?)</p>#i', $html, $matches);
只是檢查$ matches變量它包含你所需要的。
如果提供了匹配項,則會填充搜索結果。 $匹配[0]將包含匹配完整模式的文本, $匹配1將包含匹配第一個捕獲的 括號內子模式的文本,依此類推。
之後使用preg_replace
刪除<p>
標記。
,但如果你只是想刪除<p>
標籤,並保持子剛preg_replace
這樣的:
$html = "left <p>substring</p> right";
$html = preg_replace('#</?p>#i', '', $html);
echo $html;
輸出:
left substring right
我發佈了這個確切的答案,但得到了幾個downvotes。有時候這個網站可能會引起人們的注意! – madscientist159
是的,有時候人們很奇怪:/ – yoeunes
如何關於使用將匹配傳遞給用戶的preg_replace_callback
d已定義的功能。
$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1);
$m
爲匹配陣列的任何變量名稱,其中索引0
是完整的圖案匹配use
(&$p)
任何變量名,用於存儲匹配(通過引用傳遞)。
的DOMDocument :: removeChild之 –
@All卡西米爾的評論是最好的做法。使用html解析器處理html字符串是最值得信賴的。爲了獲得最佳效果,您應該花時間研究和開發利用他的建議的方法。 – mickmackusa