//URL START
$urlregex = "^(https?|ftp)\:\/\/";
// USER AND PASS
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";
// HOSTNAME OR IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*";
// PORT
$urlregex .= "(\:[0-9]{2,5})?";
// PATH
$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?";
// GET Query
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";
// ANCHOR
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
// check
if (eregi($urlregex, $url)) {echo "good";} else {echo "bad";}但是如果我有http://www.example.com/about-me/my-4*-hotel/呢?
该eregi检查无效,因为有星号。我该怎么办?
发布于 2010-04-30 17:06:08
来自the documentation
此函数已从PHP5.3.0开始弃用。非常不鼓励依赖此功能。
请改用带有FILTER_VALIDATE_URL的filter_var。或者,如果你坚持使用正则表达式,那么就使用preg_*。
发布于 2010-05-01 08:41:25
我认为您的问题出在URL上,而不是regex上。据我所知,URL的路径部分不允许使用星号。如果你真的需要一个星号,你应该避开它:
http://www.example.com/about-me/my-4%2A-hotel/发布于 2010-04-30 16:56:45
您可以更改您的正则表达式以允许星号...
$urlregex .= "(\/([a-z0-9+\$_*-].?)+)*\/?"; https://stackoverflow.com/questions/2743319
复制相似问题