2

我的代码是

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

我输入了错误的语法吗?

4

1 回答 1

3

模式需要有某种分隔符围绕它。

if(preg_match('/' . $pattern . '/',$file)){

/是典型的,但可以使用“任何非字母数字、非反斜杠、非空白字符”。只需确保您的分隔符本身不会出现$pattern

因此,如果您的模式是http://(.*),其中已经包含/字符,您可能需要选择其他内容,例如~

if(preg_match('~' . $pattern . '~',$file)){

或者,正如@jensgram下面所指出的,如果您不能保证您的模式不会包含某个分隔符,您可以使用preg_quote()转义模式中的这些字符,如下所示:

if(preg_match('~' . preg_quote($pattern, '~') . '~',$file)){

哦,另外,由于您使用的是eregi()(不区分大小写),因此您需要在分隔符之外添加对您的模式不区分大小写的i修饰符。

if(preg_match('~' . $pattern . '~i',$file)){
于 2011-08-30T15:53:15.713 回答