Regulärer Ausdruck - Hilfe!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regulärer Ausdruck - Hilfe!

    Hallo PHP-Profis,

    leider habe ich zwei Probleme mite einem regulären Ausdruck, und hoffe, es kann mir hier jemand helfen.

    Darum geht es:

    aus folgendem, exemplarischen URL möchte ich die [COLOR="Red"]ID[/COLOR] und [COLOR="Green"]Seite[/COLOR] auslesen:

    $url = "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-[COLOR="Red"]12345[/COLOR]-[COLOR="Green"]34[/COLOR].html";

    $id = preg_replace("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).htm|html/", "$1 : $2", $url);

    echo $id;

    ergibt das gewünschte Ergebnis: [COLOR="Red"]12345[/COLOR] : [COLOR="Green"]34[/COLOR]


    Nun zu meinen Fragen:

    1.) Wenn ich nur die [COLOR="Red"]ID[/COLOR] auslesen möchte, und die 2. Zeile wie folgt ändere:

    $id = preg_replace("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).htm|html/", "$1", $url);

    ist das Ergebnis bei echo $id folgendes:

    [COLOR="Red"]12345[/COLOR]1

    Wo kommt die "1" hinten dran her? Wie werde ich sie los?



    2. Das Suchmuster müsste noch erweitert werden, weil die zu durchsuchenden URLs entweder eine Seitenzahl enthalten oder nicht! D. h. bei einem exemplarischen URL

    $url = "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-[COLOR="Red"]12345[/COLOR].html";

    sollte die [COLOR="Red"]ID[/COLOR] ausgegeben werden und "0" für [COLOR="Green"]Seite[/COLOR].

    Wie müsste sich also der preg_replace Befehl ändern, damit beide Arten von URLs erkannt und die [COLOR="Red"]ID[/COLOR] bzw. [COLOR="Green"]Seite[/COLOR] ausgelesen werden?

    ID und Seite können jeweils nur Zahlen sein.

    Vielen Dank und beste Grüße,
    Chriss
    Zuletzt geändert von Chriss; 24.01.2018, 16:18.

  • #2
    Zum Auslesen nimmt man preg_match
    PHP-Code:
    $url "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-12345-34.html";
    preg_match("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).html/"$url$hit);
    print_r($hit); 
    Gruß
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Vielen Dank Peter, Problem 1 ist gelöst.

      Jetzt fehlt mir nur noch die Abänderung des Suchmusters, so dass es ein Ergebnis gibt, auch wenn keine "Seitenzahl" im URL vorhanden ist.

      Gruß,
      Chriss

      Kommentar


      • #4
        Habe das Problem nun gelöst. Ein passender regulärer Ausdruck ist mir allerdings nicht einfallen... So habe ich es über zwei Abfragen (jeweils mit regulärem Ausdruck) gelöst, einmal mit dem Parameter "Seite" und einmal ohne. Wenn man die Ergebnisse vergleicht, weiß man, ob es den Parameter "Seite" gibt oder nicht. Also eine pragmatische Lösung, die funktioniert.

        Gruß,
        Chriss

        Kommentar

        Lädt...
        X