Устранение неполадок "Ошибка разделителя не должна быть буквенно-цифровой или обратной косой чертой" при изменении ereg() на preg_match()
Возможный дубликат:
Преобразование выражений ereg в preg
<?php
$searchtag = "google";
$link = "http://images.google.com/images?hl=de&q=$searchtag&btnG=Bilder-Suche&gbv=1";
$code = file_get_contents($link,'r');
ereg("imgurl=http://www.[A-Za-z0-9-]*.[A-Za-z]*[^.]*.[A-Za-z]*", $code, $img);
ereg("http://(.*)", $img[0], $img_pic);
echo '<img src="'.$img_pic[0].'" width="70" height="70">'; ?>
И я получаю эту ошибку
Устаревший: функция ereg() устарела в C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php в строке 5
Устаревший: функция ereg() устарела в C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php в строке 6
Функции
preg_match() дают эту ошибку
Предупреждение: preg_match() [function.preg-match]: разделитель не должен быть буквенно-цифровым или обратным слэшем в C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php в строке 6
Предупреждение: preg_match() [function.preg-match]: разделитель не должен быть буквенно-цифровым или обратным слэшем в C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php в строке 7
Ответы
Ответ 1
-
ereg
устарел. Не используйте его.
- Функции
preg
- это все "регулярные выражения Perl", что означает, что для вашего регулярного выражения вам нужно иметь какой-то маркер начала и конца. Часто это будет /
или #
, но любой не-альфа-цифровой будет делать все.
Например, они будут работать:
preg_match("/foo/u",$needle,$haystack);
preg_match("#foo#i",$needle,$haystack);
preg_match("@[email protected]",$needle,$haystack);
preg_match("\$foo\$w",$needle,$haystack); // bad idea because `$` means something
// in regex but it is valid anyway
// also, they need to be escaped since
// I'm using " instead of '
Но это не будет:
preg_match("foo",$needle,$haystack); // no delimiter!
Ответ 2
С preg_match()
ваше регулярное выражение должно начинаться и заканчиваться разделителем, таким как /
с несколькими исключениями (например, добавление "i" в конце для нечувствительности к регистру).
например.
preg_match('/[regex]/i', $string)