好的我會回答我自己的問題,但首先感謝Gordon推動我走向正確的方向。我的結果是基於stackoverflow上的this問題。
它使用DOM
而不是preg_replace()
就像我在很多例子中看到的那樣。
有件事要提的是,我需要使用get_the_content()
而不是the_content()
,因爲the_content()
與回波結果相關。但在codex是一個提示如何過濾get_the_content()
實現與the_content()
相同的輸出。
這裏是代碼,做什麼,我想:
$dom = new DOMDocument;
$dom->loadHTML(get_the_content());
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//img|//a[img]');
foreach($nodes as $node) {
$node->parentNode->removeChild($node);
}
$no_image_content = $dom->saveHTML();
$no_image_content = apply_filters('the_content', $no_image_content);
$no_image_content = str_replace(']]>', ']]>', $no_image_content);
echo $no_image_content;
推在正確的方向:http://stackoverflow.com/search?q=remove+html+user%3A208809 – Gordon 2013-02-14 16:08:43
樣板代碼用DOM刪除元素總是一樣的。你可以在上面的鏈接中找到足夠的例子。唯一不同的是你如何獲得元素。爲了得到所有具有圖像子元素的元素,您可以使用'// a [img]'。爲了獲得所有圖像,你可以使用// img。你可以通過在它們之間加入'|'來組合這兩個。 – Gordon 2013-02-14 16:22:37
謝謝@戈登我會研究上面的例子,並在我得到某些東西時回報。 – fabianmoronzirfas 2013-02-14 19:18:00