Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证特定链接的链接_Php_Regex_Validation_Url - Fatal编程技术网

Php 验证特定链接的链接

Php 验证特定链接的链接,php,regex,validation,url,Php,Regex,Validation,Url,我知道已经有验证链接的问题了。但我对正则表达式非常不熟悉,我不知道如何验证用户输入(html)是否与以下URL等效: http://www.domain.com/?p=123456abcde 或 我猜是这样的 /^(http://)(www)((\.[A-Z0-9][A-Z0-9_-]*).com/?p=((\.[A-Z0-9][A-Z0-9_-]*) 我需要正则表达式或两个URL。谢谢这将匹配您的两个字符串 (http:\/\/)?(www\.)?([A-Z0-9a-z][A-Z0-9a-

我知道已经有验证链接的问题了。但我对正则表达式非常不熟悉,我不知道如何验证用户输入(html)是否与以下URL等效:

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

我猜是这样的

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

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

这将匹配您的两个字符串

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

我强烈建议使用正则表达式检查器,您可以为(几乎)每个操作系统找到一些,甚至还有一些在线的,如:或。

这将匹配您的两个字符串

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

我强烈建议使用正则表达式检查器,您可以为(几乎)每个操作系统找到一些,甚至还有一些在线的,如:或。

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

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

如果只需要
.com
域,请将
[a-z]{2,6}
替换为
com
。查看它的实际操作。

这将使任何有效域与您指定的格式匹配

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

如果只需要
.com
域,请将
[a-z]{2,6}
替换为
com
。查看它的实际操作。

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

在PHP中,使用函数

Perl:

红宝石:


.NET:

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

在PHP中,使用函数

Perl:

红宝石:


.NET:

为什么
?v
如果你的问题是
?p
?对不起,我是说p。是的,那是错误的。如果你的问题是p,那么为什么你猜的是。是的,那是错的谢谢,那太好了;)也很好:)并且可以找到一个好的正则表达式教程@虽然这确实有效,但它不是通用的,不适用于.co.uk域,
http://
部分有语法错误,应该是
http:\/\/
,与潜在的https不匹配,允许在域名中使用下划线,也可以匹配与第二个不同的URL,比如甚至。同意,但OP的问题不是一般性的。如果有更多的细节,我可以构建一个更好的正则表达式。不过,我已经编辑了我的答案,添加了
\/\/
,谢谢您指出。谢谢,太好了;)也很好:)并且可以找到一个好的正则表达式教程@虽然这确实有效,但它不是通用的,不适用于.co.uk域,
http://
部分有语法错误,应该是
http:\/\/
,与潜在的https不匹配,允许在域名中使用下划线,也可以匹配与第二个不同的URL,比如甚至。同意,但OP的问题不是一般性的。如果有更多的细节,我可以构建一个更好的正则表达式。不过,我已经编辑了我的答案,添加了
\/\/
,感谢您指出。PHP的
解析url
函数不是实现这一点的方法,正如该函数的文档中所述:“此函数不用于验证给定的url,它只是将其分解为上面列出的部分。“似乎更合适。PHP的
parse_url
函数不是实现这一点的方法,正如该函数的文档中所述:“此函数不是为了验证给定的url,它只是将其分解为上面列出的部分。”似乎更合适。