我的代码是
if(eregi($pattern,$file)){
$out['file'][]=$file;
}else
但是在php 5.3中不起作用,它显示警告
Function eregi() is deprecated
所以我改为
if(preg_match($pattern,$file)){
$out['file'][]=$file;
}else
但现在显示
preg_match(): No ending delimiter '.' found
我输入了错误的语法吗?
答案 0 :(得分:3)
模式需要有某种delimiter character围绕它。
if(preg_match('/' . $pattern . '/',$file)){
/
是典型的,但可以使用“任何非字母数字,非反斜杠,非空白字符”。只需确保您的分隔符不会出现在$pattern
本身。
因此,如果您的模式为http://(.*)
,其中已包含/
个字符,您可能需要选择其他内容,例如~
:
if(preg_match('~' . $pattern . '~',$file)){
或者,如下面的@jensgram注释,如果你不能保证你的模式不会包含某个分隔符,你可以使用preg_quote()来转义模式中的那些字符,如下所示: / p>
if(preg_match('~' . preg_quote($pattern, '~') . '~',$file)){
哦,此外,由于您正在使用eregi()
(不区分大小写),因此您需要在分隔符之外添加i
modifier以区分大小写不敏感。
if(preg_match('~' . $pattern . '~i',$file)){