Seite 1 von 1
Eigener bbCode... (preg_match_all!)
Verfasst: 11.02.2005 11:08
von SoulReaver1989
Also es geht um folgendes...
ich habe schon selber so nen Code à la bbCode programmiert
ich mach das über
Code: Alles auswählen
$content=preg_replace("/\[b\](.*?)\[\/b\]/si", "<b>\\1</b>", $content);
$content=preg_replace("/\[i\](.*?)\[\/i\]/si", "<i>\\1</i>", $content);
$content=preg_replace("/\[u\](.*?)\[\/u\]/si", "<u>\\1</u>", $content);
Aber damit ersetze ich ja nur
oder so ähnlich!
Jedenfalls... möchte ich bilder einfügen... dazu möchte ich an den Bildernamen kommen und ihn in einer Variable haben also z.B.
Code: Alles auswählen
Input : [img=mypicture.jpg]
Verarbeitung: array_push($picnames, "$picname"); // $picname = mypicture.jpg;
Wie ermögliche ich eine solche Rückmeldung, dass ich aus "bbCode" Dinge "auslesen" kann?
Verfasst: 11.02.2005 11:13
von Blutgerinsel
Wenn du anstatt einer Copy & Paste Aktion mal die Pattern Syntax von PHP lesen würdest, wüsstest du wie.........
Bachreferences sei dir genannt......
Was du ja auch in deinen vorherigen Beispielen bereits gemacht hast aber offentsichtlich nicht weisst was du gemacht hast

Verfasst: 11.02.2005 11:18
von SoulReaver1989
Blutgerinsel hat geschrieben:Wenn du anstatt einer Copy & Paste Aktion mal die Pattern Syntax von PHP lesen würdest, wüsstest du wie.........
Bachreferences sei dir genannt......
Was du ja auch in deinen vorherigen Beispielen bereits gemacht hast aber offentsichtlich nicht weisst was du gemacht hast

Sorry is ne doofe angewohnheit

Genauso wie mit meinen Backups - ich mach nie welche und reg mich drüber auf - aber dummheit muss bestraft werden
Ich hab mir jetzt diese Seite durchgelesen:
http://www.php-resource.de/tutorials/read/10/1/
Und bin nicht schlauer

Reicht es denn einfach im neuen String kein <img>-Blabla reinzuschreiben und dann hat man ja den String oder zieht die funktion preg_replace zu viel Ressourcen für solche Spässe?
Verfasst: 11.02.2005 11:42
von Blutgerinsel
Kommt darauf an auf was du matchen willst........
Interessiert dich primär ob es eine Url ist oder ob nur ein File im jpg oder gif oder whatever Format vorhanden ist?
Wenn du nur prüfen willst ob eine Bilddatei angehängt wurde und die Url haben willst dann reicht schon
Backreference \2 wäre hier die Url und \3 der Dateityp
Re: Eigener bbCode...
Verfasst: 11.02.2005 19:07
von Pyramide
SoulReaver1989 hat geschrieben:Jedenfalls... möchte ich bilder einfügen... dazu möchte ich an den Bildernamen kommen und ihn in einer Variable haben also z.B.
Code: Alles auswählen
Input : [img=mypicture.jpg]
Verarbeitung: array_push($picnames, "$picname"); // $picname = mypicture.jpg;
Wie ermögliche ich eine solche Rückmeldung, dass ich aus "bbCode" Dinge "auslesen" kann?
D.h. du möchtest als Ergebnis eine Liste aller Bilder haben? Das geht mit [php:preg_match_all]
Verfasst: 15.02.2005 18:46
von SoulReaver1989
Code: Alles auswählen
$code = preg_match_all("/\[img\ desc=\"(.*?)\" embed=\"(.*?)\" auto=\"(.*?)\"\](.*?)\[\/img\]/si",
"[img desc=\"Hier sehen Sie XY mit XY\" embed=\"float\" auto=\"no\"]http://www.example.org/image.jpg[/img]",
$ausgabe, PREG_PATTERN_ORDER);
foreach($ausgabe[1] as $key => $value)
{
echo "$key - $value<br>";
}
Was habe ich hier an
preg_match_all falsch verwendet?
Dieser Snippet gibt mir nur den Wert von desc="(.*?)" aus!
Ich weiss ich bliggs net

Hat das was mit der Rückreferenzierung zu tun?
Oder wie hab ich den Artikel auf php.net falsch verstanden, dass ich auf so ein Ergebnis komme!
Verfasst: 16.02.2005 00:10
von Pyramide
php.net hat geschrieben:PREG_PATTERN_ORDER
Ordnet die Ergebnisse so an, dass $treffer[0] ein Array von Übereinstimmungen mit dem kompletten Suchmuster ist, $treffer[1] ein Array von Zeichenketten, die mit dem ersten eingeklammerten Teil-Suchmuster übereinstimmen und so weiter.
Ist in deinem Fall ist aber warscheinlich PREG_SET_ORDER besser, denn dann kannst du folgendes machen:
Code: Alles auswählen
preg_match_all(..., $ausgabe, PREG_SET_ORDER);
foreach($ausgabe as $bild) {
echo "Beschreibung: $bild[1]<br>";
echo "embed: $bild[2], auto: $bild[3]<br>";
echo "Dateiname: $bild[4]<br>";
}
PREG_PATTERN_ORDER wäre sinnvoll, wenn du z.B. nur die Dateinamen als Array brauchst - dann kannst du in deinem Beispiel direkt mit $ausgabe[4] weiterarbeiten ohne irgendwelche Schleifen zu erstellen.
Verfasst: 16.02.2005 14:15
von SoulReaver1989
Danke das hat funktioniert!
Aber ersetzen muss ich dann wieder mit preg_replace oder?