【问题标题】:Validate a link for a specific link php [duplicate]验证特定链接php的链接[重复]
【发布时间】:2013-08-25 10:12:01
【问题描述】:

我知道已经存在验证链接的问题。但是我对正则表达式很不好,我不知道如何验证用户输入(在 html 中)是否等同于这些 URL:

http://www.domain.com/?p=123456abcde

http://www.domain.com/doc/123456abcde

我猜是这样的

/^(http://)(www)((\.[A-Z0-9][A-Z0-9_-]*).com/?p=((\.[A-Z0-9][A-Z0-9_-]*)

我需要正则表达式或两个 URL。谢谢

【问题讨论】:

  • 如果你的问题是?p,为什么你的猜测是?v
  • 对不起,我的意思是 p。是的,这是错误的

标签: php regex validation url


【解决方案1】:

这可能不是正则表达式的工作,而是你选择的语言中的现有工具。正则表达式不是你对碰巧涉及字符串的每个问题挥舞的魔杖。您可能希望使用已经编写、测试和调试过的现有代码。

在 PHP 中,使用 parse_url 函数。

Perl:URI module.

鲁比:URI module.

.NET:'Uri' class

【讨论】:

  • PHP 的 parse_url 函数不是解决这个问题的方法,正如该函数的文档中所述:“这个函数不是为了验证给定的 URL,它只是将它分解进入上面列出的部分。 filter_var 似乎更合适。
【解决方案2】:

这将匹配您的两个字符串。

(http:\/\/)?(www\.)?([A-Z0-9a-z][A-Z0-9a-z_-]*).com\/(\?p=)?([A-Z0-9a-z][\/A-Za-z0-9_-]*)

我强烈推荐使用正则表达式检查器,您可以为(几乎)每个操作系统找到一些,甚至还有一些在线检查器,例如:http://regexpal.com/http://www.quanetic.com/Regex

【讨论】:

  • 谢谢,太好了;)
  • http://regex101.com/ 也不错:)
  • 还有很好的正则表达式教程可以找到@regular-expressions.info
  • 虽然这确实有效,但它不是通用的,不适用于 .co.uk 域,http:// 部分有语法错误,应该是 http:\/\/,不匹配潜在的 https,允许在域名中使用下划线,也可以匹配与第二个不同的 URL,例如 domain.com/foo/bar 甚至 domain.com/f
  • 同意,但 OP 的问题并不笼统。有了更多细节,我本可以构建一个更好的正则表达式。不过,我已经编辑了答案以添加 \/\/,感谢您指出。
【解决方案3】:

这将匹配任何具有您指定格式的有效域。

http(s)?:\/\/(www\.)?[a-zA-Z0-9-\.]+\.[a-z]{2,6}\/(\?p=|doc\/)[a-z0-9]+

如果您只需要 .com 域,请将 [a-z]{2,6} 替换为 com。亲身体验here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2012-09-21
    • 2012-05-20
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多