String (reguläre Ausdrücke)

Tl2012

Grünschnabel
Hallo,

ich möchte aus einem String alle zwischen 2 eckigen Klammern vorkommenden IDs auslesen und sie dann in einen Link umwandeln.

Das folgende Script kann leider nur eine Id auslesen:

PHP:
$string = '[tag:2] blabla  [tag:3]  und [tag:6]';
$string = preg_replace('/\[tag:(.+)\]/i', "<a href='#'>$1</a>", $string);

echo $string;

Wäre über Tipps wie ich es hinbekomme das nicht nur eine sondern jede id die zwischen 2 ekligen Klammern steht ausgelesen wird sehr dankbar :)

LG tl2012
 
Hi,

der "." matcht ja alle Zeichen und ist gierig. Somit passt dein Ausdruck auf den ganzen Text und nicht nur auf die Tags. Folgender RegEx sollte so funktionieren, wie du es willst:

Code:
\[tag:([^\]]+)\]

Ich habe hier den "." durch ein "[^\]]" ersetzt. Somit matcht er alles ausser dem "]".

Grüße,
BK
 
Vielen Dank :)
Das klappt.
Jetzt brauch ich allerdings bevor ich den Url ausgebe eine Datenbankabfrage denn die Ids gehören zu Usern und anhand davon will ich ihren Username auslesen.
Das Ergebniss soll dann so aussehen.


<a href="profile.php?user=$id">$Vorname $Name</a>

Kann mir jemand helfen wie ich es schaffe diese Abfrage noch für jede Id mit einzubauen?

LG tl2012
 
Zuletzt bearbeitet:
Hi,

hol dir die Zahlen per preg_match(). Mit der Funktion erhältst du ein Array mit allen ID's. Dieses kannst du dann durchlaufen und über die Datenbank dann die restlichen Infos holen.

Grüße,
BK
 
Zurück