错误日志中的Preg_match错误

时间:2011-01-26 15:18:16

标签: php preg-match

我的错误日志中显示以下错误:

PHP Warning:  preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Delimiter must not be alphanumeric or backslash in /home/sites/mydomain.com/public_html/public/themes/js/imagegallery.php on line 24, referer: http://www.mydomain.com/collections.html

这是它引用的preg匹配 - 有没有人知道它究竟与什么有关?

$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile() && !preg_match('\.jpg$/', $fileinfo->getFilename())) {
        $bgimagearray[] = $fileinfo->getFilename();
    }
}

5 个答案:

答案 0 :(得分:3)

模式开头缺少“/”?

答案 1 :(得分:0)

是的,你在正则表达式中根本没有使用任何分隔符。引擎尝试将正则表达式中的第一个char计算为start-delimiter。你的第一个字符是反斜杠。这是不允许的。

以这种方式修改你的正则表达式

!preg_match('#\.jpg$#',....

答案 2 :(得分:0)

您错过了第一个分隔符(/)。

但是,这里不需要正则表达式。您只需执行以下操作即可获取文件名:

$extension = pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION);

答案 3 :(得分:0)

分隔符是用于表示正则表达式的开头和结尾的字符。通常人们会使用/#@之类的内容,但它可以是任何字符。

请改为尝试:

preg_match('/\.jpg$/', ...

那就是说,在这里使用substr()可能会更好,不需要正则表达式。

答案 4 :(得分:0)

分隔符是指您正在使用的RegEx周围的符号。在这种情况下,您使用正确的结束分隔符,但不是开头的分隔符。它应该如下所示:preg_match('/\.jpg$/', ...)