2012-11-29 92 views
2

我不知道是否有任何方式從PHP字符串中刪除特定標籤?從PHP字符串中刪除特定標籤

我有幾個特點,使其知識,例如strip_tags,但我真正想要的是刪除包含類屬性或任何標籤,我在下面給出一個例子:

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

如何我只能刪除包含class屬性'inner'的標籤?

如果有人能告訴我一個辦法做到這一點,我會很感激。

+2

你需要自己解析HTML。 – NullUserException

+0

使用DOM解析器解析您的HTML,然後修改DOM並從DOM重新創建HTML。看看[PHP DOM](http://php.net/manual/en/book.dom.php)頁面。這不是你想用正則表達式解決的問題。 –

+0

我問過類似的疑問。[此鏈接](http://stackoverflow.com/questions/13154595/extract-div-tags-with-specific-class-using-php)有答案。 – harry

回答

2

沒有這樣做的功能,爲避免使用可怕的正則表達式,最好的方法是將其加載到類中,並遍歷字符串中的標記。然後,您可以根據類屬性有選擇地刪除標籤,然後將其寫回到字符串中。

請參閱http://php.net/manual/en/class.domdocument.php的文檔。

+0

感謝您的回答。 – oletob

+0

@evolquez:無需迭代。檢查我的答案。 –

1

很簡單的使用XPath:

<?php 

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>'; 

$dom = new DOMDocument; 
@$dom->loadXML($string); 

$xpath = new DOMXPath($dom); 

$inners = $xpath->query('//p[@class="inner"]'); //Select all p.inner in the document 

foreach ($inners as $element) { 
    $element->parentNode->removeChild($element); //Remove 'em 
} 

var_dump($dom->saveHTML($dom)); 
相關問題