gpt4 book ai didi

php - PHP 5.3 的 ereg/eregi 替代品

转载 作者:IT王子 更新时间:2023-10-29 00:14:27 44 4
gpt4 key购买 nike

很抱歉提出问题,但在理解正则表达式代码方面我一无是处。

在我没有写的一个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 时需要这个,其中 eregeregi功能已弃用。替换

eregi('pattern', $string, $matches) 

使用

preg_match('/pattern/i', $string, $matches)

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

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

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

if (preg_match("%{$regex}%i", $url))
return true;

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

关于php - PHP 5.3 的 ereg/eregi 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954064/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com