我可以在这里使用 preg_match 而不是已弃用的 eregi 吗,如果是这样,如何使用?

can I use preg_match instead of deprecated eregi here and if so how?

提问人:Epiphanisation 提问时间:2/15/2011 最后编辑:BenMorelEpiphanisation 更新时间:5/18/2014 访问量:423

问:

当前代码

eregi("(.*)/index.php$", $scriptName, $regs)

沿着以下思路思考

preg_match("(.*)/index.php$", $scriptName, $regs)

但不确定$regs位是什么,以及我需要在括号中更改什么才能使其工作?

PHP的

评论


答:

1赞 alex 2/15/2011 #1
preg_match_all("/(.*)\/index.php$/", $scriptName, $regs)

请注意,您可以在 PHP 中使用大多数字符作为正则表达式分隔符,例如 .~

但不确定$regs位是什么,以及我需要在括号中更改什么才能使其工作?

$regs将是比赛。 有这种行为,有第三个论点。它是通过引用传递的,因此如果匹配成功,您可以简单地开始下标。 将具有整个匹配项,并且该部分将在字符串的末尾进行。preg_match_all()$regs[0][1]/index.php

至于括号的变化,我总是把这些括号称为括号,所以我会假设这就是你的意思(对不起吹毛求疵)。您指的是函数括号内的参数,还是正则表达式本身中的匹配组?无论哪种方式,只需使用上面的代码:)

0赞 Kaiser 2/15/2011 #2

http://php.net/manual/en/function.eregi.php

警告

自 PHP 5.3.0 起,此函数已弃用。强烈建议不要依赖此功能