我的错误日志中显示以下错误:
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();
}
}
答案 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$/', ...)