关于 eregi() 和 preg_match() 的问题

发布于 2024-12-02 06:51:45 字数 357 浏览 1 评论 0原文

我的代码是

if(eregi($pattern,$file)){ $out['文件'][]=$文件; }else

但这在 php 5.3 中不起作用,它显示警报

Function eregi() is deprecated

所以我更改为

if(preg_match($pattern,$file) ){ $out['文件'][]=$文件; }else

但现在它显示

preg_match(): Noending delimiter '.'发现

我是否输入了错误的语法?

My code was

if(eregi($pattern,$file)){
$out['file'][]=$file;
}else

But is doesn't work in php 5.3, it shows the alert

Function eregi() is deprecated

so I changed to

if(preg_match($pattern,$file)){
$out['file'][]=$file;
}else

But now it shows

preg_match(): No ending delimiter '.' found

Did I enter any wrong syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我喜欢麦丽素 2024-12-09 06:51:45

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

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)){

The pattern needs to have some sort of delimiter character surrounding it.

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

/ is typical, but "any non-alphanumeric, non-backslash, non-whitespace character" could be used. Just make sure your delimiter character doesn't appear in the $pattern itself.

So if your pattern was http://(.*), which already has / characters in it, you might want to choose something else like ~:

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

Alternatively, as @jensgram notes below, if you can't guarantee your pattern won't contain a certain delimiter character, you could escape those characters in the pattern with preg_quote(), like so:

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

Oh, also, since you're using eregi() (case-insensitive), you'll want to add the i modifier for case-insensitive to your pattern, outside the delimiter.

if(preg_match('~' . $pattern . '~i',$file)){
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文