首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eregi中的星号

eregi中的星号
EN

Stack Overflow用户
提问于 2010-04-30 16:49:25
回答 3查看 209关注 0票数 0
代码语言:javascript
复制
//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检查无效,因为有星号。我该怎么办?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-30 17:06:08

来自the documentation

此函数已从PHP5.3.0开始弃用。非常不鼓励依赖此功能。

请改用带有FILTER_VALIDATE_URL的filter_var。或者,如果你坚持使用正则表达式,那么就使用preg_*

票数 2
EN

Stack Overflow用户

发布于 2010-05-01 08:41:25

我认为您的问题出在URL上,而不是regex上。据我所知,URL的路径部分不允许使用星号。如果你真的需要一个星号,你应该避开它:

代码语言:javascript
复制
http://www.example.com/about-me/my-4%2A-hotel/
票数 1
EN

Stack Overflow用户

发布于 2010-04-30 16:56:45

您可以更改您的正则表达式以允许星号...

代码语言:javascript
复制
$urlregex .= "(\/([a-z0-9+\$_*-].?)+)*\/?"; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2743319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档