首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP 5.3的ereg/eregi替换

PHP 5.3的ereg/eregi替换
EN

Stack Overflow用户
提问于 2012-03-31 15:47:08
回答 4查看 52.6K关注 0票数 19

我很抱歉问了一个问题,但我在理解正则表达式代码方面是无用的。

在我没有编写的php模块中,有以下函数

代码语言:javascript
复制
function isURL($url = NULL) {
    if($url==NULL) return false;

    $protocol = '(http://|https://)';
    $allowed = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';

    $regex = "^". $protocol . // must include the protocol
                     '(' . $allowed . '{1,63}\.)+'. // 1 or several sub domains with a max of 63 chars
                     '[a-z]' . '{2,6}'; // followed by a TLD
    if(eregi($regex, $url)==true) return true;
    else return false;
}

某个仁慈的灵魂能给我替换eregi所需的替换代码吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-31 15:54:24

问得好-当你升级到PHP5.3时,这是需要的,在PHP5.3中,eregeregi函数已经被弃用。替换

代码语言:javascript
复制
eregi('pattern', $string, $matches) 

使用

代码语言:javascript
复制
preg_match('/pattern/i', $string, $matches)

(第一个参数中尾随的i表示忽略大小写,对应于eregi中的i -在替换ereg调用的情况下跳过)。

但要注意新模式和旧模式之间的差异!This page列出了主要的差异,但是对于更复杂的正则表达式,您必须更详细地查看POSIX regex之间的差异(由旧的ereg/eregi/POSIX regex函数等支持)。还有PCRE

但是在您的示例中,您可以安全地将eregi调用替换为:

代码语言:javascript
复制
if (preg_match("%{$regex}%i", $url))
    return true;

(注意:%是一个分隔符;通常使用斜杠/。您必须确保分隔符不在正则表达式中,或者对其进行转义。在您的示例中,斜杠是$regex的一部分,因此使用不同的字符作为分隔符更方便。)

票数 47
EN

Stack Overflow用户

发布于 2014-03-15 14:26:49

暂缓PHP 5.3,直到您替换所有不推荐使用的函数

代码语言:javascript
复制
if(!function_exists('ereg'))            { function ereg($pattern, $subject, &$matches = []) { return preg_match('/'.$pattern.'/', $subject, $matches); } }
if(!function_exists('eregi'))           { function eregi($pattern, $subject, &$matches = []) { return preg_match('/'.$pattern.'/i', $subject, $matches); } }
if(!function_exists('ereg_replace'))    { function ereg_replace($pattern, $replacement, $string) { return preg_replace('/'.$pattern.'/', $replacement, $string); } }
if(!function_exists('eregi_replace'))   { function eregi_replace($pattern, $replacement, $string) { return preg_replace('/'.$pattern.'/i', $replacement, $string); } }
if(!function_exists('split'))           { function split($pattern, $subject, $limit = -1) { return preg_split('/'.$pattern.'/', $subject, $limit); } }
if(!function_exists('spliti'))          { function spliti($pattern, $subject, $limit = -1) { return preg_split('/'.$pattern.'/i', $subject, $limit); } }
票数 11
EN

Stack Overflow用户

发布于 2012-03-31 16:00:11

你想要一个完全替代preg_match和eregi的软件吗?

代码语言:javascript
复制
if(!filter_var($URI, FILTER_VALIDATE_URL))
{ 
return false;
} else {
return true;
}

或电子邮件:

代码语言:javascript
复制
if(!filter_var($EMAIL, FILTER_VALIDATE_EMAIL))
{ 
return false;
} else {
return true;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9954064

复制
相关文章

相似问题

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