我想將標籤從我的WordPress feed中取出,但保留段落。PhP strip_tags:如何刪除包含某個屬性的標籤
strip_tags($content, '<p>');
這工作得很好,但我不希望保持與圖片說明涉及的段落...他們是這樣的:
<p class="wp-caption-text">blah blah blah</p>
所以,我怎麼帶,其持有的標籤,我們說,班級屬性?
所有幫助非常感謝。
我想將標籤從我的WordPress feed中取出,但保留段落。PhP strip_tags:如何刪除包含某個屬性的標籤
strip_tags($content, '<p>');
這工作得很好,但我不希望保持與圖片說明涉及的段落...他們是這樣的:
<p class="wp-caption-text">blah blah blah</p>
所以,我怎麼帶,其持有的標籤,我們說,班級屬性?
所有幫助非常感謝。
編輯:這實際上並不是OP想要的解決方案,但是回答了被問到的問題。
不幸的是,你不能直接用strip_tags做到這一點。
你可以使用DOM文檔,雖然,然後用strip_tags後:
$DOM = new DOMDocument();
$DOM->loadHTML($content);
foreach($DOM->getElementsByTagName("p") as $p)
{
foreach($p->attributes as $attr)
$p->removeAttributeNode($attr);
}
$content = $DOM->saveHTML();
//Uncommenting this will then remove the tag as well.
//$content = strip_tags($content, 'p');
OP:「那麼,我該如何去除標籤,比如說類屬性呢?」這實際上並沒有達到 –
@SamuelCook。錯誤地保留了OP代碼中的<>。 OP問題實際上是模棱兩可的 - 它指出「如何去掉標籤」,當它實際上應該閱讀「如何刪除特定類的元素」。 – brandonscript
我改變了模棱兩可的標題:P但是,你知道我如何設置正確的編碼嗎?即我得到「 - 」而不是引號:( –
要做到這一點是使用一個DOM解析庫的最簡單方法。 DOMDocument
內置於PHP,適用於DOM操作。 DOMXPath
適合查詢。
$dom = new DOMDocument;
$dom->loadHTML($yourHTML);
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//*[not(p)]|.wp-caption-text") as $node) {
$node->parentNode->removeChild($node);
}
請注意,這也是strip_tags
的工作。
很酷,我會試試看,我對DOM解析很陌生,但我想我會只要我更好地掌握它,就開始重新修復我所有討厭的正則表達式,但非常感謝! –
您的要求不能用'strip_tags'來完成,因爲PHP手冊中說過..'此函數不會修改您允許使用allowable_tags'的標籤上的任何屬性 –
考慮改寫您的問題 - 您說的方式你的問題「我如何去掉標籤,讓我們說,類屬性」看起來實際上並不是你要求做的(也就是移除那個特定類的*元素)。 – brandonscript
謝謝。最難的部分通常是問正確的問題:P –