2016-05-12 30 views
1

我已經嘗試了一些解決方案,只取出了標籤本身留下的內容和任何其他嵌套如何刪除所有<span>標籤及其各自的內容,包括其他嵌套元素?

正則表達式,

preg_replace('/<span\b[^>]*>(.*?)<\/span>/ig', '', $page->body); 

使用HTML淨化器也試過,

$purifier->set('Core.HiddenElements', array('span')); 

$purifier->set('HTML.ForbiddenElements', array('span')); 
+0

告訴我們你嘗試過什麼。也許你錯過了什麼 – svarog

+0

@svarog更新,道歉 – FatlessButton

回答

2

根據你的實際字符串和你嘗試過的東西,你可以使用正則表達式(假設你的span標籤只是span標籤)。 然而,更合適的解決方案是使用像DomDocument這樣的html解析器。

您可以使用功能document.getElementsByName("span");獲取所有span元素並將其從文檔對象中移除。
然後使用saveHTML獲取html代碼。

你會得到這樣的事情:

$doc = new DOMDocument; 
$doc->load($yourpage); 

$root = $doc->documentElement; 

// we retrieve the spans and remove it from the book 
$spans = $book->getElementsByTagName('span'); 
foreach ($spans as $span){ 
    $root->removeChild($span); 
} 

echo $doc->saveXML(); 
+1

非常感謝,得到它的工作:) – FatlessButton

+2

感謝您不認可RegEx作爲匹配任意HTML的工具。 –

相關問題