web-dev-qa-db-fra.com

Dépannage de l'erreur "Le délimiteur ne doit pas être alphanumérique ou barre oblique inverse" lors du changement de ereg () en preg_match ()

Duplicata possible:
Conversion des expressions ereg en 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">'; ?> 

Et je reçois cette erreur

Déconseillé: la fonction ereg () est déconseillée dans C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php sur la ligne 5

Déconseillé: la fonction ereg () est déconseillée dans C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php sur la ligne 6

les fonctions preg_match () donnent cette erreur

Avertissement: preg_match () [function.preg-match]: le délimiteur ne doit pas être alphanumérique ni barre oblique inverse dans C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php sur la ligne 6

Avertissement: preg_match () [function.preg-match]: le délimiteur ne doit pas être alphanumérique ni barre oblique inverse dans C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php sur la ligne 7

21
gordon33
  1. ereg est obsolète. Ne l'utilisez pas.
  2. Les fonctions preg sont toutes des "expressions régulières Perl", ce qui signifie que vous devez avoir une sorte de marqueur de début et de fin sur votre expression régulière. Ce sera souvent / ou #, mais tout non alphanumérique fera l'affaire.

Par exemple, cela fonctionnera:

preg_match("/foo/u",$needle,$haystack);
preg_match("#foo#i",$needle,$haystack);
preg_match("@foo@",$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 '

Mais cela ne va pas:

preg_match("foo",$needle,$haystack); // no delimiter!
45
cwallenpoole

Avec preg_match() votre expression régulière doit commencer et se terminer par un délimiteur tel que / à quelques exceptions près (par exemple en ajoutant "i" à la fin pour la casse).

par exemple.

preg_match('/[regex]/i', $string)
3
Yes Barry