gpt4 book ai didi

php - 如何避免DOM解析添加html doctype、和标签?

转载 作者:可可西里 更新时间:2023-11-01 12:48:50 25 4
gpt4 key购买 nike

<?
$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 constants : LIBXML_HTML_NODEFDTD表示不添加文档类型定义,LIBXML_HTML_NOIMPLIED说不要添加像 <html> 这样的隐含元素和 <body> .

关于php - 如何避免DOM解析添加html doctype、<head>和<body>标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1528190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com