<?
$string = '
Some photos<br>
<span class="naslov_slike">photo_by_ile_IMG_1676-01</span><br />
<span class="naslov_slike">photo_by_ile_IMG_1699-01</span><br />
<span class="naslov_slike">photo_by_ile_IMG_1697-01</span><br />
<span class="naslov_slike">photo_by_ile_IMG_1695-01</span><br />
';
$dom = new DOMDocument();
$dom->loadHTML($string);
$dom->preserveWhiteSpace = false;
$elements = $dom->getElementsByTagName('span');
$spans = array();
foreach($elements as $span) {
$spans[] = $span;
}
foreach($spans as $span) {
$span->parentNode->removeChild($span);
}
echo $dom->saveHTML();
?>
我正在使用这段代码来解析字符串。当该函数返回字符串时,它会添加一些标签:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Some photos<br><br><br><br><br></p></body></html>
有什么方法可以避免这种情况并返回干净的字符串吗?该输入字符串只是举例,使用时可以是任意html字符串。
从 5.4 开始的 PHP 版本,当使用 Libxml 2.6.0 或更高版本编译时,可以使用options
参数为DomDocument::loadHTML()。有了它你可以这样做:
$dom = new \DomDocument();
$dom->loadHTML($string, \LIBXML_HTML_NODEFDTD | \LIBXML_HTML_NOIMPLIED);
// do stuff
echo $dom->saveHTML();
我们通过两个libxml 常量: LIBXML_HTML_NODEFDTD
表示不添加文档类型定义,并且LIBXML_HTML_NOIMPLIED
说不要添加隐含元素,例如<html>
and <body>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)