使用 PHP 从 XHTML 中剥离微数据 - 使用 RegEx?
第一:我读过一般内容;不要在 XHTML 参数上使用 RegEx,如下所示:RegEx 匹配除了 XHTML 自包含标签之外的开放标签,并且我确实了解 RegEx 如何在嵌套 XHTML 或 XML 节点上失败。
我不明白为什么单独操作 XML 的属性会破坏使用 RegEx。因此,一般规则似乎也有例外。属性始终包含在以 <
开头并以 >
结尾的单个节点中,任何其他 <或 之间的 >
会破坏 XML,因此不会发生这种情况。
现在我想清除 XHTML 字符串中可能包含的任何微数据。这是任何属性 itemscope
、itemtype
、itemprop
、itemid
和 itemref
。像这样的事情:
...
<body itemscope="itemscope" itemtype="http://schema.org/WebPage">
<div itemprop="maincontent">content</div>
...
在 PHP 中执行此操作的最佳方法是什么?
First: I've read the general; don't use RegEx on XHTML arguments like this one: RegEx match open tags except XHTML self-contained tags and I do understand how RegEx will fail on nested XHTML or XML nodes.
I don't see why manipulating attributes of an XML alone should break using RegEx. So there seems to be exceptions to the general rule. Attributes are always contained in a single node starting with a <
and ending with a >
any other < or >
in between would break the XML so such can't occur.
Now I'd like to clean an XHTML string of any microdata it might contain. That is any attributes itemscope
, itemtype
, itemprop
, itemid
and itemref
. Something like this:
...
<body itemscope="itemscope" itemtype="http://schema.org/WebPage">
<div itemprop="maincontent">content</div>
...
What's the best way to do this in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我实际上建议:
有一堆命名空间问题,我不确定您必须如何处理,但这可能比尝试构建一个或多个正则表达式并确保您不会错过任何内容更干净/更快乐。
编辑:事实证明 SimpleXML 不起作用(修改能力有限),但 DOM 可以。像这样的事情:
您必须修改它以包含您想要删除的所有属性,就像我说的我不知道它将如何处理名称空间,但它是一个开始。
I'd actually suggest:
There are a bunch of namespace issues that I'm not sure how you'd have to handle, but that will probably be cleaner/happier than trying to build one or more regex expressions and make sure you don't miss anything.
EDIT: turns out SimpleXML won't work (limited modification capabilities) but DOM will. Something like this:
You'd have to modify it to include all the attributes you want to remove, and like I said I have no clue how it would deal with namespaces, but its a start.