【发布时间】:2022-02-02 14:58:15
【问题描述】:
我正在清理 ePub 文件的 Adobe InDesign 导出功能造成的混乱。
我的目标:
选项 1. 我想删除所有具有类属性 CharOverride-7 的 span 元素,但保留其他 span 元素。
选项 2. 在某些情况下,我想将 span.CharOverride-7 替换为新元素,例如 i。
请注意,我目前手动且耗时的方式是进行批量搜索和替换操作,但输入的文本文件不一致(额外的空格和其他工件)。
输入文本包含数百个p 段落,如下所示:
<p class="2"><span class="CharOverride-7">A book title</span><a href="https://aaa.net"><span class="CharOverride-8">https://aaa.net</span></a><span class="CharOverride-7">.</span></p>
<p class="2"><span class="CharOverride-7">Another book title</span><a href="https://aaa.net"><span class="CharOverride-8">https://aaa.net/</span></a><span class="CharOverride-7">.</span></p>
所需的输出应如下所示:
选项一(删除元素)
<p class="2">A book title<a href="https://aaa.net/"><span class="CharOverride-8">https://aaa.net/</span></a>.</p>
选项二(将 span.CharOverride 替换为 i 元素)
<p class="2"><i>A book title</i><a href="https://aaa.net/"><span class="CharOverride-8">https://aaa.net</span></a><i>.</i></p>
【问题讨论】:
-
可能会使用 xpath 定位所有
span.CharOverride-7。你试过什么了?我会转换为i(或em或strong)。 -
使用
DOMDocument解析文件。然后你可以使用它的方法找到你想要的元素,替换它们,并写出更新后的 HTML。