【发布时间】:2026-01-31 12:20:07
【问题描述】:
我需要一个正则表达式来去除字符串中的外部/* HTML 标签,但保留内部标签。
$str = "<div>Start <br /> <span>test</span> end.</div>";
进入
$str = "Start <br /> <span>test</span> end.";
还有
$str = "<aside id="main" class="one">Start <br /> <span>test</span> end.</aside>";
进入
$str = "Start <br /> <span>test</span> end.";
.
preg_replace('/<[^>]*>/', '', $str);
删除所有标签,而不仅仅是外部标签。
【问题讨论】:
-
使用DOM 比使用老套的正则表达式更好
-
DOM 无法选择标签的内容而不剥离内容中存在的标签。但是,它可以选择带有
<div>bla <br> bla</div>等内容的整个标签,现在我只需要剥离实际的外部标签(在本例中为 div)并保留带有标签的内容。 -
$html = $domElement->ownerDocument->saveHTML($domElement);应该在 $html 中返回 Dom 节点的内容,而不剥离其中的标签 -
问题不在于 DOM 是否比正则表达式更好,而是如何使用正则表达式... 使用正则表达式而不是 DOM 是有正当理由的,正则表达式的一个主要优点是性能更快比 DOM(见这里blog.futtta.be/2014/05/01/…)
-
1000 次观看,只有一票否决。太棒了,这个地方曾经是积极的。发生了什么?没有答案,只是有些人自视甚高
标签: php html regex html-parsing