Php 在简单html dom输出上插入字符串

Php 在简单html dom输出上插入字符串,php,simple-html-dom,Php,Simple Html Dom,我需要在dom元素中插入一个字符串,以便它们在调用simple\u html\u dom::\u tostring时显示,但这样它们就不会影响simple\u html\u dom api 因此,如果我有一个简单的\u html\u dom节点,其中$node->outertext如下所示: <div class="MyClass"> <div itemprop="myVar"> </div> </div> 因此,我们的想法是,

我需要在dom元素中插入一个字符串,以便它们在调用
simple\u html\u dom::\u tostring
时显示,但这样它们就不会影响simple\u html\u dom api

因此,如果我有一个简单的\u html\u dom节点,其中
$node->outertext
如下所示:

<div class="MyClass">
    <div itemprop="myVar">

    </div>
</div>
因此,我们的想法是,当使用简单的html dom api与元素交互时,它好像没有插入
$string
。然后在输出html时,在开始(或结束)标记之后(或之前)立即插入
$string

例如,
$node->innertext=$string.$node->innertext
是不可接受的,因为它会影响解析,因为
$node
在开头会有一个新的子级

有没有一种内置的方法可以做到这一点?
如果没有,是否有一种方法可以在不编辑
simple\u html\u dom
的源代码的情况下实现它

编辑:性能不是问题,因为输出将被缓存。

和:我刚刚意识到我可以只做
$node->setAttribute('insertOnDisplay',$string)
然后在显示之前再次刮取文档,删除属性,并将属性值放入内部文本。在将其作为答案发布之前,我会看看是否还有其他更好的选择(并进行测试)。

我扩展了simple_html_dom和
simple_html_dom_node
并在
simple_html_dom_node
中创建了一个
prepareOutput
方法,该方法使用
jdom-[before | after]:[outertext]
然后将文本设置为在
innertext
outertext
之前或之后。这感觉像是一种令人讨厌的方式,但它确实有效


我还稍微更改了
simple\u html\u dom
以使用
新静态::$domClass
来实例化dom和
新静态::$nodeClass
来实例化节点,而不是使用
新静态
,因此,我可以让它在内部创建新节点时实例化我的子类

我不明白为什么不能在打印html之前插入文本?如果只是出于输出目的,那么只要创建另一个变量就可以了,如果您希望原始节点不受影响,我正在抓取文档,并且满足某些条件时(假设一个节点有一个特定的标记或属性),然后我将元素传递给其他函数对其进行操作,比如添加一个
属性,或者……这些函数中的任何一个都可以附加
simple_html_dom
不应该看到的文本(输出时除外).正因为如此,我认为您的任何一种方法都会增加显著的复杂性…不过,我现在意识到,我可以只做
$node->setAttribute('insertOnDisplay',$string)
,然后在显示之前再次刮除文档,删除属性,并将属性值放入内部文本。
<div class="MyClass">
    INSERTED STRING
    <div itemprop="myVar">

    </div>
</div>