Troubleshooting "Delimiter must not be alphanumeric or backslash" error when changing ereg() to preg_match()
Solution 1
ereg
is deprecated. Don't use it.- The
preg
functions are all "Perl regular expressions" meaning you need to have some sort of beginning and end marker on your regex. Often this will be/
or#
, but any non alpha-numeric will do fine.
For example, these will work:
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 '
But this will not:
preg_match("foo",$needle,$haystack); // no delimiter!
Solution 2
With preg_match()
your regex must begin and end with a delimiter such as /
with few exceptions (for example adding "i" at the end for case-insensative).
e.g.
preg_match('/[regex]/i', $string)
robpal
Updated on August 08, 2022Comments
-
robpal over 1 year
Possible Duplicate:
Converting ereg expressions to 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">'; ?>
And i get this error
Deprecated: Function ereg() is deprecated in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php on line 5
Deprecated: Function ereg() is deprecated in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php on line 6
preg_match() functions give this error
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php on line 6
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php on line 7