2017-08-06 76 views
-1

我刪除HTML標記的第一次出現在字符串preg_replace如何獲取preg_replace中的匹配子字符串?

$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1); 

我怎樣才能刪除的子保存爲一個新的字符串:

$deleted = '<p>...</p>'; 
+1

的DOMDocument :: removeChild之 –

+0

@All卡西米爾的評論是最好的做法。使用html解析器處理html字符串是最值得信賴的。爲了獲得最佳效果,您應該花時間研究和開發利用他的建議的方法。 – mickmackusa

回答

0

,讓你可以使用子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 
+0

我發佈了這個確切的答案,但得到了幾個downvotes。有時候這個網站可能會引起人們的注意! – madscientist159

+0

是的,有時候人們很奇怪:/ – yoeunes

0

嘗試使用:

$result = preg_match('#<p>(.*?)</p>#i', $html); 
+1

你回答什麼問題? 'preg_match'返回一個布爾值,你在做什麼? – Toto

1

如何關於使用將匹配傳遞給用戶的preg_replace_callback d已定義的功能。

$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1); 
  • $m爲匹配陣列的任何變量名稱,其中索引0是完整的圖案匹配
  • use(&$p)任何變量名,用於存儲匹配(通過引用傳遞)。

See this demo at eval.in

相關問題