Php 使用domdocument编辑html文本
给定一个部分HTML片段,如Php 使用domdocument编辑html文本,php,domdocument,Php,Domdocument,给定一个部分HTML片段,如 <div id="article"> <p>Some text</p> <p>More text</p> <pre><code> echo $variable; </code></pre> </div> 我想循环遍历文本节点并对它们应用一个函数,这与函数的功能无关,但与前置代码块中的文本无关 鉴
<div id="article">
<p>Some text</p>
<p>More text</p>
<pre><code>
echo $variable;
</code></pre>
</div>
我想循环遍历文本节点并对它们应用一个函数,这与函数的功能无关,但与前置代码块中的文本无关
鉴于它是一个部分代码块,我想我需要使用
DOMDocument->createDocumentFragment()
。但是,如何在不创建额外的
标记的情况下循环文本节点,然后保存输出,就像默认情况下saveHTML()
所做的那样?为什么要使用DomDocument
为什么不从“远程源”读取HTML,然后使用file\u put\u contents()将其保存为服务器上的文件
您可以使用文档片段。在文本节点上循环是很容易的,找到它们有点麻烦。为此,下面的示例使用XPath查询查找所有不是
<div id="article">
<p>txet emoS</p>
<p>txet eroM</p>
<pre><code>
echo $variable;
</code></pre>
</div>
HTML
);
$text_nodes=$xpath->query('sundant::text()[not(祖先::pre)]”,$frag);
foreach($text\u节点作为$text\u节点){
$text\u node->data=strev($text\u node->data);
}
//打印div
echo$doc->saveHTML($frag->firstChild);
这将打印出如下内容:
有用链接:
- (
extends`DOMCharacterData)DOMText
<div id="article">
<p>txet emoS</p>
<p>txet eroM</p>
<pre><code>
echo $variable;
</code></pre>
</div>