Fehlerbehebung „Trennzeichen darf kein alphanumerisches Zeichen oder Backslash sein“ beim Ändern von ereg() in preg_match() [duplicate]

Lesezeit: 2 Minuten

Benutzeravatar von robpal
robpal

Mögliches Duplikat:

Konvertieren von ereg-Ausdrücken in 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">'; ?> 

Und ich bekomme diesen Fehler

Veraltet: Die Funktion ereg() ist in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php in Zeile 5 veraltet

Veraltet: Die Funktion ereg() ist in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php in Zeile 6 veraltet

preg_match()-Funktionen geben diesen Fehler aus

Warnung: preg_match() [function.preg-match]: Trennzeichen darf nicht alphanumerisch oder Backslash in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php in Zeile 6 sein

Warnung: preg_match() [function.preg-match]: Trennzeichen darf nicht alphanumerisch oder Backslash in C:\Program Files\EasyPHP-5.3.8.1\www\m\img.php in Zeile 7 sein

  • Die verknüpfte Frage beantwortet möglicherweise seine Frage, aber wie werden die Fragen dadurch doppelt?

    – Brian Ortiz

    30. November 2013 um 22:04 Uhr

Benutzeravatar von cwallenpoole
cwallenpoole

  1. ereg ist veraltet. Verwenden Sie es nicht.
  2. Das preg Funktionen sind alle “reguläre Perl-Ausdrücke”, was bedeutet, dass Sie eine Art Anfangs- und Endmarkierung in Ihrer Regex haben müssen. Oft wird dies der Fall sein / oder #aber alle nicht alphanumerischen Zeichen reichen aus.

Diese funktionieren zum Beispiel:

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 '

Aber das wird nicht:

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

  • Wenn ich versuche, preg_match(“/foo/g”,$needle,$haystack); Es funktioniert nicht. Ich habe eine PHP-Warnung erhalten, Unbekannter Modifikator ‘g’

    – James

    23. März 2014 um 4:03 Uhr

  • Gemäß dieser Antwort auf eine andere Frage, /g Der Mustermodifikator funktioniert nicht in PHP. Sie müssten verwenden preg_match_all stattdessen in Ihrem Beispiel. Liste der Mustermodifikatoren für PHP

    – Turnerj

    25. Januar 2015 um 7:22 Uhr


Ja, Barrys Benutzeravatar
Ja Barri

Mit preg_match() Ihre Regex muss mit einem Trennzeichen wie z. B. beginnen und enden / mit wenigen Ausnahmen (z. B. Hinzufügen von “i” am Ende für Groß- und Kleinschreibung).

z.B

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

  • “Ein Trennzeichen kann jedes nicht-alphanumerische Zeichen, kein Backslash, kein Leerzeichen sein.” Handbuch. Aber ja, du hast recht, die Trennzeichen fehlen.

    – einsamer Tag

    16. November 2011 um 22:29 Uhr

  • Ah ja. Danke, ich werde meinen Beitrag aktualisieren!

    – Ja Barry

    16. November 2011 um 22:32 Uhr

1403870cookie-checkFehlerbehebung „Trennzeichen darf kein alphanumerisches Zeichen oder Backslash sein“ beim Ändern von ereg() in preg_match() [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy