【发布时间】:2011-07-15 15:09:42
【问题描述】:
我有一个 span 元素和其中的一些文本。 有时这个元素的内容也包括其他元素(标签)。
例如:
<span id="span_id"><a href="http://someurl" title="sometitle">value</a></span>
我需要做的是将 span 中的所有“”转换为“~gt~”。 可能有层次结构,例如a 元素内可能有 img 标签等。
所以如果输入是:
<span id="span_id"><a href="http://someurl" title="sometitle"><img src="http://anotherurl"/></a></span>
输出应该是:
<span id="span_id">~lt~a href="http://someurl" title="sometitle"~gt~~lt~img src="http://anotherurl"/~gt~~lt~/a~gt~</span>
谢谢!
【问题讨论】:
-
如果
span中有span怎么办?例如,<span id="span_id"><a href="">some text is <span style="color: green;">GREEN</span>!</a></span>我猜你想要span#span_id里面的所有东西,即使它是另一个span。对?在这种情况下,HTML 解析器 +str_replace()可能是个好主意。 -
嗯,实际上 span 中没有 span,我可以假设它是一个前提。使用 HTML 解析器的问题在于 SPAN 内部 - 并不总是有正确的 HTML,因此例如它可能会打开 A 标记而不关闭它。这就是为什么我决定用正则表达式预处理文本。然后解析它,做一些事情,然后将值替换回来。
标签: regex preg-replace