可能性のある複製:
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]:デリミタは6行目のC:\ Program Files\EasyPHP-5.3.8.1\www\m\img.phpの英数字またはバックスラッシュであってはなりません
警告:preg_match()[function.preg-match]:C:\ Program Files\EasyPHP-5.3.8.1\www\m\img.phpの7行目の区切り文字は英数字またはバックスラッシュであってはなりません
ereg
は非推奨です。使用しないでください。preg
関数はすべて「Perl正規表現」です。つまり、正規表現に何らかの開始マーカーと終了マーカーが必要です。多くの場合、これは/
または#
、ただし、英数字以外は問題ありません。たとえば、これらは機能します:
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 '
しかし、これはしません:
preg_match("foo",$needle,$haystack); // no delimiter!
preg_match()
を使用すると、正規表現の開始と終了は/
などの区切り文字で終わる必要がありますが、例外はほとんどありません(たとえば、大文字と小文字を区別しない場合は末尾に「i」を追加します)。
例えば.
preg_match('/[regex]/i', $string)