首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式- Angels不敢涉足的地方

正则表达式- Angels不敢涉足的地方
EN

Stack Overflow用户
提问于 2011-01-29 14:08:11
回答 2查看 316关注 0票数 0

我刚刚开始学习PHP中的正则表达式,但我在学习WWW上的一些教程时遇到了很糟糕的情况,似乎找不到任何能满足我当前需求的东西。也许我试图学得太多太快了。PHP的这一方面对我来说是全新的。

我尝试创建的是一个正则表达式,用我选择的任何代码替换第n次出现的和之间的所有HTML代码。

我的最终目标是在PHP中制作一个互联网过滤器,通过它我可以查看网页中任何指定的标签集之间的特定内容(或替换为经过消毒的内容)……在页面中,其中...表示任何有效的成对HTML标记,例如...或者..。或者...等等。

例如,如果页面有一个色情广告包含在第五个...代码块,那么可以调用什么正则表达式来将该代码替换为其他代码,比如xxxxxxx,而不是页面中的第5个代码块?

整个网页包含在单个文本字符串中,并且过滤结果也应该是单个文本字符串。

我不确定,但我认为执行此操作的代码可能具有类似以下的格式:

代码语言:javascript
复制
$FilteredPage = preg_replace("REG EXPRESSION", "xxxxxxxx", $OriginalPage);

要调用的"REG EXPRESSION“是我需要知道的,而"xxxxxxxx”表示替换"REG EXPRESSION“目标标签之间的代码的文本。

正则表达式显然是撒旦的杰作!

任何一般性的建议,或者可能是几个我可以研究和试验的工作示例,都将非常感谢。

谢谢,杰伊

EN

回答 2

Stack Overflow用户

发布于 2011-01-29 14:23:25

这已经做死了,但请不要使用正则表达式来解析HTML。停下来,放弃..。这是不值得的小猫,上帝会杀了你这样做。使用真正的HTML或XML解析器

从更有建设性的角度来看,xpath是一种更适合描述您可能想要替换的html节点的技术……或者phpQuery和QueryPath

当你用正则表达式解析时,上帝杀死小猫的原因:

html不是一种常规语言,因此正则表达式只能解析非常有限的Html。HTML是一种上下文无关语言,因此只有使用上下文无关解析器才能正确解析。

编辑:谢谢你@Andrew Grimm,这比我说的要好得多,正如第一个答案所证明的那样,有4000多个赞成票!

RegEx match open tags except XHTML self-contained tags

票数 3
EN

Stack Overflow用户

发布于 2011-01-29 14:33:10

首先,你是否使用了合适的工具来完成这项工作?Regex是一个文本匹配引擎,而不是一个成熟的解析器-也许专用的HTML解析器会提供更好的结果。

其次,当处理任何编程问题时,试着简化你的问题,一砖一瓦地构建它,而不是直接跳到最终的解决方案。例如,您可以:

从一个简单的普通英文文本块开始,尝试匹配并替换(例如)出现的每个单词" and“。

当它起作用时,将其封装在PHP循环中,该循环最多可以计数到5,并且只能替换出现的第5次。既然PHP在这方面的表现要好得多,为什么还要使用正则表达式呢?

然后修改您的正则表达式以匹配您的第五个HTML标记(这有点困难,因为<>是特殊字符,需要进行转义)

通过分步解决问题,您将能够使每个部分依次工作,并构建您理解的可靠解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4835460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档