我很抱歉问了一个问题,但我在理解正则表达式代码方面是无用的。
在我没有编写的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所需的替换代码吗?
发布于 2012-03-31 15:54:24
问得好-当你升级到PHP5.3时,这是需要的,在PHP5.3中,ereg和eregi函数已经被弃用。替换
eregi('pattern', $string, $matches) 使用
preg_match('/pattern/i', $string, $matches)(第一个参数中尾随的i表示忽略大小写,对应于eregi中的i -在替换ereg调用的情况下跳过)。
但要注意新模式和旧模式之间的差异!This page列出了主要的差异,但是对于更复杂的正则表达式,您必须更详细地查看POSIX regex之间的差异(由旧的ereg/eregi/POSIX regex函数等支持)。还有PCRE。
但是在您的示例中,您可以安全地将eregi调用替换为:
if (preg_match("%{$regex}%i", $url))
return true;(注意:%是一个分隔符;通常使用斜杠/。您必须确保分隔符不在正则表达式中,或者对其进行转义。在您的示例中,斜杠是$regex的一部分,因此使用不同的字符作为分隔符更方便。)
发布于 2014-03-15 14:26:49
暂缓PHP 5.3,直到您替换所有不推荐使用的函数
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); } }发布于 2012-03-31 16:00:11
你想要一个完全替代preg_match和eregi的软件吗?
if(!filter_var($URI, FILTER_VALIDATE_URL))
{
return false;
} else {
return true;
}或电子邮件:
if(!filter_var($EMAIL, FILTER_VALIDATE_EMAIL))
{
return false;
} else {
return true;
}https://stackoverflow.com/questions/9954064
复制相似问题