Michael: String nach bestimmten Zeichen durchsuchen

Hallo,

ich habe viel gesucht, aber nirgends ein passendes Beispiel gefunden. Ich verwende Wordpress und möchte in einer kleinen Funktionen aus dem Text eines Posts die ID einer verwendeteten Galerie auslesen.
Bsp (Es ist nicht aussagekräftig, aber es reicht.):
$text = "Heute ist der 25.12.2009. [nggaller id="1"] und das ist toll."

Im ersten Stepp möchte ich alle zeichen um [nggallery id="1"] auslesen und löschen und später über preg_replace("=([^0-9]+)=s", "", $text) die ID auslesen.

Kann mir hier jemand bei dem Zwischenschritt behilflich sein?

Danke. Gruß

Michael

  1. Moin!

    Im ersten Stepp möchte ich alle zeichen um [nggallery id="1"] auslesen und löschen und später über preg_replace("=([^0-9]+)=s", "", $text) die ID auslesen.

    Kann mir hier jemand bei dem Zwischenschritt behilflich sein?

    preg_replace kennst du doch schon - wo ist jetzt das Problem?

    - Sven Rautenberg

    1. preg_replace kennst du doch schon - wo ist jetzt das Problem?

      • Sven Rautenberg

      Ich weiß nicht wie ich den $pattern formulieren muss, um alle Zeichen vor der [ und nach der ] löschen kann.

      Michael

      1. Hallo,

        » preg_replace kennst du doch schon - wo ist jetzt das Problem?
        »
        »  - Sven Rautenberg

        Ich weiß nicht wie ich den $pattern formulieren muss, um alle Zeichen vor der [ und nach der ] löschen kann.

        warum willst Du diese löschen, wenn Du - wie ich aus Deinem Beitrag herauslese - Du nur an der ID interessiert bist?

        Freundliche Grüße

        Vinzenz

  2. Hallo,

    Ich [...] möchte in einer kleinen Funktionen aus dem Text eines Posts die ID einer verwendeteten Galerie auslesen.
    Bsp
    $text = "Heute ist der 25.12.2009. [nggaller id="1"] und das ist toll."

    Im ersten Stepp möchte ich alle zeichen um [nggallery id="1"] auslesen und löschen und später über preg_replace("=([^0-9]+)=s", "", $text) die ID auslesen.

    ich verstehe Dich sicher völlig falsch. Ich habe eher den Eindruck, Du möchtest in Deinem Text den Bereich

    [nggallery="<ziffern, die eine ID angeben>"]

    finden und dann auf den Inhalt zwischen den Anführungszeichen zugreifen.
    Du kannst dies

    a) ganz konventionell über Stringfunktionen erledigen:
       Finde die Position von [nggallery id=" im String mit strpos()
       Finde die Position des nächsten " nach dieser Fundstelle mit strpos() und substr().
       Schneide den Teilstring mit substr() aus.

    b) Nutze einen RegExp.
       Du suchst in Deinem String die Zeichenfolge
           [nggallery id="
       gefolgt von einer beliebigen Anzahl von Ziffern (mindestens einer), die Du Dir merken möchtest.
       gefolgt von einem Anführunszeichen,
       gefolgt von einer beliebigen Zeichenfolge.

    Du möchtest auf das zugreifen, was Du Dir gemerkt hast (eine Backreference).
       Das geht mit preg_match

    a) ist einfacher
    b) ist cooler

    Performance sollte irrelevant sein. Ich würde mich nicht wundern, wenn a) schneller wäre.

    Freundliche Grüße

    Vinzenz

    1. a) ist einfacher
      b) ist cooler

      Zitat #1418

      1. Hallo suit,

        » a) ist einfacher
        » b) ist cooler
        Zitat #1418

        :D

        Vinzenz, der genau dieses Zitat im Hinterkopf hatte ...