如何使用标签的 id 剥离标签及其所有内部 html?
我有以下 html:
<html>
<body>
bla bla bla bla
<div id="myDiv">
more text
<div id="anotherDiv">
And even more text
</div>
</div>
bla bla bla
</body>
</html>
我想删除从
开始直到结束
的所有内容。我该怎么做?I have the following html:
<html>
<body>
bla bla bla bla
<div id="myDiv">
more text
<div id="anotherDiv">
And even more text
</div>
</div>
bla bla bla
</body>
</html>
I want to remove everything starting from <div id="anotherDiv">
until its closing <div>
. How do I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用 原生 DOM
With native DOM
您可以使用
preg_replace()
,例如:You can use
preg_replace()
like:使用本机 XML 操作库
假设您的 html 内容存储在变量 $html:
要按 ID 删除标记,请使用以下代码:
请注意,某些版本的
libxml
需要存在doctype
才能使用getElementById 方法。
在这种情况下,您可以在 $html 前面加上
或者,按照 Gordon 的答案建议,您可以使用
DOMXPath
使用 xpath 查找元素:无论标签如何,该方法都有效。如果您想使用具有相同 id 但不同标签的第二种方法,例如
form
,只需将//div[ @id> 中的
by '//div
替换即可="anotherDiv"]//form
'Using the native XML Manipulation Library
Assuming that your html content is stored in the variable $html:
To delete the tag by ID use the following code:
Note that certain versions of
libxml
require adoctype
to be present in order to use thegetElementById
method.In that case you can prepend $html with
<!doctype>
Alternatively, as suggested by Gordon's answer, you can use
DOMXPath
to find the element using the xpath:The first method works regardless the tag. If you want to use the second method with the same id but a different tag, let say
form
, simply replace//div
in//div[ @id="anotherDiv" ]
by '//form
'strip_tags() 函数就是您正在寻找的。
http://us.php.net/manual/en/function。条带标签.php
strip_tags() function is what you are looking for.
http://us.php.net/manual/en/function.strip-tags.php
我编写这些是为了去除特定的标签和属性。由于它们是正则表达式,因此不能 100% 保证在所有情况下都能工作,但这对我来说是一个公平的权衡:
I wrote these to strip specific tags and attributes. Since they're regex they're not 100% guaranteed to work in all cases, but it was a fair tradeoff for me:
这个怎么样?
how about this?
根据 RafaSashi 使用
preg_replace()
的回答,这是一个适用于单个标签或标签数组的版本:Following RafaSashi's answer using
preg_replace()
, here's a version that works for a single tag or an array of tags: