PHP正则表达式,用于;网站名称「; 重复:
我的目标是为网站名创建一个PHP正则表达式。regex是一个潜在客户收集表单,应该接受任何合法的网站名称语法。经过彻底的搜索,我很惊讶在那里找不到一个 以下是我正在寻找的正则表达式匹配项:PHP正则表达式,用于;网站名称「; 重复:,php,regex,dns,Php,Regex,Dns,我的目标是为网站名创建一个PHP正则表达式。regex是一个潜在客户收集表单,应该接受任何合法的网站名称语法。经过彻底的搜索,我很惊讶在那里找不到一个 以下是我正在寻找的正则表达式匹配项: somewebsite.com 此外,它还应匹配: 上面任何一个带有尾随反斜杠的选项,例如:somewebsite.com/ 子域 无需正则表达式 $subject = 'example.com'; $part = (stripos($subject, 'http://') === FALSE)
- somewebsite.com
- 上面任何一个带有尾随反斜杠的选项,例如:somewebsite.com/
- 子域
- 无需正则表达式
$subject = 'example.com';
$part = (stripos($subject, 'http://') === FALSE) ? 'http://' : '' ;
var_dump(filter_var($part.$subject, FILTER_VALIDATE_URL));
不需要正则表达式
$subject = 'example.com';
$part = (stripos($subject, 'http://') === FALSE) ? 'http://' : '' ;
var_dump(filter_var($part.$subject, FILTER_VALIDATE_URL));
谷歌提供。但是它非常复杂,所以其他人可能会有一个更简单的
编辑:先试试安迪的答案。如果你能找到一个替代正则表达式的方法,9/10的方法会更好
^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$
谷歌提供。但是它非常复杂,所以其他人可能会有一个更简单的
编辑:先试试安迪的答案。如果你能找到正则表达式的替代品,9/10这个替代品会更好。你可能需要调整它:
^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$
<?php
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';
$url1 = "http://www.somewebsite.com";
$url2 = "https://www.somewebsite.com";
$url3 = "https://somewebsite.com";
$url4 = "www.somewebsite.com";
$url5 = "somewebsite.com";
function valURL($pattern, $url) {
$return = false;
if(preg_match($pattern, $url)) {
$return = true;
}
if($return == true) {
echo "Match URL: <font color='green'>" . $url . "</font><br /><br />";
} else {
echo "Try Again: <font color='red'>URL: " . $url . "</font><br /><br />";
}
}
valURL($pattern, $url1);
valURL($pattern, $url2);
valURL($pattern, $url3);
valURL($pattern, $url4);
valURL($pattern, $url5);
?>
您可能需要调整它:
<?php
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';
$url1 = "http://www.somewebsite.com";
$url2 = "https://www.somewebsite.com";
$url3 = "https://somewebsite.com";
$url4 = "www.somewebsite.com";
$url5 = "somewebsite.com";
function valURL($pattern, $url) {
$return = false;
if(preg_match($pattern, $url)) {
$return = true;
}
if($return == true) {
echo "Match URL: <font color='green'>" . $url . "</font><br /><br />";
} else {
echo "Try Again: <font color='red'>URL: " . $url . "</font><br /><br />";
}
}
valURL($pattern, $url1);
valURL($pattern, $url2);
valURL($pattern, $url3);
valURL($pattern, $url4);
valURL($pattern, $url5);
?>
我决定在这里对答案进行基准测试,以证明正则表达式并不是这些简单任务的答案。安迪·利克曼的密码比其他答案快30%到60%。他确实有一个bug,但我用一行代码修复了它。你可以在下面查看我的结果
下面是运行测试的代码
PS如果其他人使用正则表达式验证URL,我可能会发疯;) 我决定对这里的答案进行基准测试,以证明正则表达式并不是这些简单任务的答案。安迪·利克曼的密码比其他答案快30%到60%。他确实有一个bug,但我用一行代码修复了它。你可以在下面查看我的结果
下面是运行测试的代码
PS如果其他人使用正则表达式验证URL,我可能会发疯;) 你错过了一个好机会!请注意,这仅适用于非常有用的PHP5.2+,但与以下内容不匹配:somewebsite.com安迪,发布前测试代码。结果是错误的。但我投票支持你,因为正则表达式被过度使用,太疯狂了。你错过了一个很接近的参数!请注意,这仅适用于非常有用的PHP5.2+,但与以下内容不匹配:somewebsite.com安迪,发布前测试代码。结果是错误的。我投票支持你,因为regex被过度使用,这太疯狂了。这很有用,但与以下内容不匹配:somewebsite.com这很有用,但与以下内容不匹配:somewebsite.com你说的是网站的地址,不是网站的名称。你说的是网站的地址,不是他们的名字。我无法让你的代码工作。你能提供一个简单的使用实例吗?你能提供一个简单的使用实例吗?你能提供一个简单的使用实例吗?美元的简单的使用实例:美元模式(((((((((((((((($)模式=////////////(0-0-9a-9a-9-9-9a-9-AZ-z-z()()。((((((((())你)你能提供你能提供一个-0-0-0-0-9-9-0-0-0-0-0-0-0-0-0-0-0-0-0-9-9-0-0-9-z-0-0 0-0 0-0-z()()())(((((((((((((((((((((((((((=)))))及(((((((((((((((([0-9a-z!*'()。;?:@&=$,%#-])/?$/对不起,我还是不上班。这就是我正在尝试的。有什么建议吗$一些url=''$(0-9a-9-9a-z-z\333333扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑“*”()。;?:@&=$,%#-])/?)$/”;如果(preg_match($pattern,$some_url)){echo“valid”}或者{echo“invalid”}我无法让您的代码工作。你能提供一个简单的使用实例吗?你能提供一个简单的使用实例吗?你能提供一个简单的使用实例吗?美元的简单的使用实例:美元模式(((((((((((((((($)模式=////////////(0-0-9a-9a-9-9-9a-9-AZ-z-z()()。((((((((())你)你能提供你能提供一个-0-0-0-0-9-9-0-0-0-0-0-0-0-0-0-0-0-0-0-9-9-0-0-9-z-0-0 0-0 0-0-z()()())(((((((((((((((((((((((((((=)))))及(((((((((((((((([0-9a-z!*'()。;?:@&=$,%#-])/?$/对不起,我还是不上班。这就是我正在尝试的。有什么建议吗$一些url=''$(0-9a-9-9a-z-z\333333扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑“*”()。;?:@&=$,%#-])/?)$/”;如果(preg_match($pattern,$some_url)){echo“valid”}其他{echo“invalid”}@PhillPafford我在这个问题中链接了你的答案:谢谢你的这个Regexp@PhillPafford我在这个问题中链接了你的答案:谢谢你的这个Regexp!