【发布时间】:2012-09-15 21:09:43
【问题描述】:
有人可以帮助我们使用正则表达式来检测 URL 字符串中的重复模式吗?目标显然是检测 malformed 奇怪的 URL。
例如以下网址是可以的:
http://www.somewhere.com/help/content/21/23/en/
http://www.somewhere.com/help/content/21/24/en/
http://www.somewhere.com/help/content/21/64/en/
http://www.somewhere.com/help/content/21/65/en/
http://www.somewhere.com/help/content/21/67/en/
虽然这个这个是不正确的,应该被标记:
http://www.somewhere.com/help/content/21/content/1/54/en/
http://www.somewhere.com/help/content/21/content/1/62/en/
http://www.somewhere.com/help/content/21/content/8/52/en/
因为 content 重复了两次。到目前为止,我们一直在使用 parse_url 和 explode 来解决这个问题,但是看起来效率很低!
此外,我知道可能有许多 URL 在路径中重复数字或其他值,因此任何解决此问题的建议都将受到欢迎。
非常感谢!
为了更好地理解这个问题,您可以访问以下链接并点击“Administrador MySQL”:
【问题讨论】:
-
在你的例子中,没有重复的“模式”——只有“内容”这个词。如果这就是您所担心的,您可以使用
substr_count,如果“内容”出现多次,请标记它。否则,请发布可能重复的可能模式示例。 -
似乎这些是您需要重新映射到新系统的旧 URL - 看起来它们在系统中生成不正确。因此,我会找到并解决实际问题,而不是通过解析然后更正已经不正确的 URL 来解决它。
-
newfurniturey,你说得对,但我当然不知道还能出现什么,因为这是爬虫的一部分,信息流实际上很大,而且有很多网站有开发错误可以使系统无限循环。
-
prodigitalson,我也是这么想的,直到我意识到在使用 chrome 和 firefox 浏览网站时也会发生同样的情况。这是某些 wiki 实现中的错误。
-
您甚至无法开始尝试调试其他人的网站。一些网站合法地在其 URL 中有重复的模式。有些在语义上可能有多余的重复,但仍然需要使站点正常工作。如果您正在制作爬虫,您会因提供错误 URL 的人而受到惩罚,您不会尝试解决他们的问题,尤其是当您查看黑匣子时可能出现的问题范围是无限的。
标签: php regex string url duplicate-data