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