PHP 5.3的ereg / eregi替换
发布时间:2020-05-31 01:32:48 所属栏目:PHP 来源:互联网
导读:我很抱歉提出一个问题,但是在理解正则表达式代码时我没用. 在我没写的php模块中是以下功能 function isURL($url = NULL) { if($url==NULL) return false; $protocol = (http://|https://); $allowed = ([a-z0-9]([-a-z0-9]*[a-z0-9]+)?);
|
我很抱歉提出一个问题,但是在理解正则表达式代码时我没用. 在我没写的php模块中是以下功能 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 好的问题 – 当您升级到PHP 5.3时,这是必需的,其中不推荐使用ereg和eregi函数.取代eregi('pattern',$string,$matches)
使用 preg_match('/pattern/i',$matches)
(在第一个参数中的尾随我意味着忽略,并对应于eregi中的i – 在替换ereg调用的情况下跳过). 但要注意新旧模式之间的差异! This page列出了主要的差异,但是对于更复杂的正则表达式,您必须更详细地查看POSIX regex(由旧的ereg / eregi / split函数等支持)与PCRE之间的差异. 但在您的示例中,您只需使用以下命令替换eregi调用即可: if (preg_match("%{$regex}%i",$url))
return true;
(注意:%是一个分隔符,通常使用斜杠/,您可以确保分隔符不在正则表达式中,也可以将其转义.在示例中,斜杠是$regex的一部分,因此更方便使用不同的字符作为分隔符.) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
