Ошибка Preg_match в журнале ошибок - PullRequest
0 голосов
/ 26 января 2011

В моем журнале ошибок отображается следующая ошибка:

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

Вот прег-совпадение, к которому оно относится - кто-нибудь знает, к чему это относится?

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

Ответы [ 5 ]

3 голосов
/ 26 января 2011

Отсутствует "/" в начале вашего шаблона?

0 голосов
/ 26 января 2011

Разделитель относится к символам, которые окружают RegEx, который вы используете. В этом случае вы используете правильный конечный разделитель, но не начальный. Это должно выглядеть так: preg_match('/\.jpg$/', ...)

0 голосов
/ 26 января 2011

A delimiter - это символ, используемый для обозначения начала и конца регулярного выражения.Обычно люди используют что-то вроде /, # или @, но это может быть любой символ.

Попробуйте вместо этого:

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

Тем не менее,вероятно, было бы лучше использовать substr() здесь, нет необходимости в регулярных выражениях.

0 голосов
/ 26 января 2011

Вам не хватает первого разделителя (/).

ОДНАКО, здесь нет необходимости в регулярном выражении.Вы можете получить имя файла, просто выполнив:

$extension = pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION);
0 голосов
/ 26 января 2011

Да, вы не используете никаких разделителей вообще в своем регулярном выражении. Двигатель пытается оценить первый символ в вашем регулярном выражении как начальный разделитель. Ваш первый символ - это обратный слеш. Это не разрешено.

Измените свое регулярное выражение таким образом

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