我正在搜索解析以下内容的代码:
一些texttext
我需要删除不必要的<span>
次出现,因此输出为:
一些texttext
我写了一个正则表达式,它执行过一次:
/ [^&LT;] * LT; / SPAN&GT; / I
如何在<span>
和</span>
上完成同样的工作次数?
答案 0 :(得分:0)
您可以尝试查看<span>
是否会被另一个<span>
直接跟着,而其匹配的</span>
会被另一个</span>
直接添加。
但实际上你不能说那个跨度是没用的,因为可以将标记添加到那些特定的跨度中。如果没有任何标记,则最后剩余的跨度也是无用的,也可能也被删除。
答案 1 :(得分:0)
$result = preg_replace(
'%(?<=<span>) # Assert that there is a directly preceding span tag
<span> # Match a span tag
((?:(?!</?span>).)*) # Match the contents of the tag only if they do not include another span tag
</span> # Match a closing span tag
(?=</span>) # Assert that there is a directly following span tag
%six',
'\1', $subject);
将适用于您的示例,但必须应用两次,因为它会在每次迭代时删除一个嵌套span
标记的“图层”。
因此,对于任意嵌套的标记,您需要为每个嵌套级别调用一次。