Подтвердить что ты не робот

Устранение неполадок "Ошибка разделителя не должна быть буквенно-цифровой или обратной косой чертой" при изменении 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

4b9b3361

Ответ 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)