PHP的:剥离HTMLstring的特定标签?
我有以下的HTML:
<html> <body> bla bla bla bla <div id="myDiv"> more text <div id="anotherDiv"> And even more text </div> </div> bla bla bla </body> </html>
我想删除从<div id="anotherDiv">
开始的所有内容,直到closures<div>
。 我怎么做?
与本地DOM
$dom = new DOMDocument; $dom->loadHTML($htmlString); $xPath = new DOMXPath($dom); $nodes = $xPath->query('//*[@id="anotherDiv"]'); if($nodes->item(0)) { $nodes->item(0)->parentNode->removeChild($nodes->item(0)); } echo $dom->saveHTML();
你可以像使用preg_replace()
一样使用:
$string = preg_replace('/<div id="someid"[^>]+\>/i', "", $string);
你也可以使用简单的HTML DOM 。
用PHP5 +编写的HTML DOMparsing器可让您以非常简单的方式操作HTML!
strip_tags()函数是你正在寻找。
除了Haim Evgi使用preg_replace()
的答案:
function
function strip_single_tag($str,$tag){ $str=preg_replace('/<'.$tag.'[^>]*>/i', '', $str); $str=preg_replace('/<\/'.$tag.'>/i', '', $str); return $str; }
编辑
处理strip_single_tag('<pre>abc</pre>','p');
function strip_single_tag($str,$tag){ $str1=preg_replace('/<\/'.$tag.'>/i', '', $str); if($str1 != $str){ $str=preg_replace('/<'.$tag.'[^>]*>/i', '', $str1); } return $str; }
资源
那么由drpcken说
假设你有
$ title =“pipe理post”;
然后你可以使用它作为strip_tags($ title,'title');
它将简单地回复你pipe理文章
我写这些去剥去特定的标签和属性。 由于他们是正则expression式,他们不是100%保证在所有情况下工作,但这对我来说是一个公平的权衡:
// Strips only the given tags in the given HTML string. function strip_tags_blacklist($html, $tags) { foreach ($tags as $tag) { $regex = '#<\s*' . $tag . '[^>]*>.*?<\s*/\s*'. $tag . '>#msi'; $html = preg_replace($regex, '', $html); } return $html; } // Strips the given attributes found in the given HTML string. function strip_attributes($html, $atts) { foreach ($atts as $att) { $regex = '#\b' . $att . '\b(\s*=\s*[\'"][^\'"]*[\'"])?(?=[^<]*>)#msi'; $html = preg_replace($regex, '', $html); } return $html; }
这个怎么样?
// Strips only the given tags in the given HTML string. function strip_tags_blacklist($html, $tags) { $html = preg_replace('/<'. $tags .'\b[^>]*>(.*?)<\/'. $tags .'>/is', "", $html); return $html; }