SimpleXML - HTML:普通文本中的元素

SimpleXML - HTML: element within common text

我正在使用 DOM -> SimpleXML:

解析文档 HTML
$dom = new DOMDocument();
$dom->loadHTML($this->resource->get());
$html = simplexml_import_dom($dom);

并想加载这篇文章:

<p>
    Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
    But there can be even <b>bold</b> tag and many others.
</p>

然后我想做点什么然后导出;但是内部标签被解析为 <p> 的子节点 - 这在形式上是正确的,但我如何重建原始文档?是否有一些库可以处理文本值中的标签?

常见情况下浏览器怎么样?

谢谢

// p.s。我 CAN 解析文本中包含节点的文档,ISN'T 问题;问题是节点丢失了它们在原文中的位置

更新 v1.0 好的,解决方案可以是封装每个节点,同时具有节点和值。

更新后的问题可以是 - 如何从 simple_xml?

中获取 raw 节点值

从之前的 HTML 片段我想要这样的东西:

echo $nodeParagraph->rawValue;

输出将是

Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.

更新 v2.0 我的坏处 - SimpleXML 节点具有 saveXML(alis to asXML),它可以执行我想要的操作。对不起,噪音。当我构建工作测试时,我会 post 回答。

正如@jzasnake 指出的那样,很好的解决方案是这样做:

样本(输入):

<p>
    Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
    But there can be even <b>bold</b> tag and many others.
</p>

这会在 DOM 中输出类似这样的内容:

  • p
    • b

其中文本的顺序不正确(如果您以后想重建它)。

解决方案可以将每个文本展开到它自己的节点中(注意 <value> 标签):

<p>
    <value>Some text here </value><strong class="wanna-attributes-too">with strong element!</strong><value>.
    But there can be even </value><b>bold</b><value> tag and many others.</value>
</p>

markup有点啰嗦,不过看看这个:

  • p
    • 价值
      • 价值
    • 价值
    • b
      • 价值
    • 价值

所有内容都被保留,因此您可以按原样重建原始文档。