Meiner ist jetzt auch wieder on!!!
Ich wollte noch zu dem Tutorial sagen das ich es ehrlich gesagt nicht ganz versteanden habe... du machst das zu ungenau.... Erkläre diese Befehle noch etwas besser... was soll diese variable $1 darstellen?
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] &a mp;a mp;a mp;a mp;q uot; B B
Einklappen
Neue Werbung 2019
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Ein Gast antwortete
-
http://pear.php.net/package/HTML_BBCodeParser
http://software.unclassified.de/cont...=code.php.abbc
Diese beiden sind sogar erreichbar ...
Einen Kommentar schreiben:
-
Ein Gast antworteteKennt ihr das???
Da hat jemand mal eine Parserklasse für BBCode geschrieben:
http://www.christian-seiler.de/projekte/php/bbcode/
Einen Kommentar schreiben:
-
Ein Gast antwortetehi,
Hab mir schon fast gedacht, dass ich die Modifiers falsch hab
werd das mal anpassen..
Und ich bin mir jetzt mal nicht so ganz sicher, ob $matches[2] der richtige Index ist ... 1 wäre mein Kandidat ...
ich benutze das Script in ähnlicher Form u.a. bei Phoogle und es funktioniert:
[0] ist der gesamte String, der zurückgegeben wird beim callback,
und danach werden ja einfach die klammern einzeln hinzugefügt,
und somit ist [1]= http:// ; [2]=.*
Einen Kommentar schreiben:
-
Re: "BB-Code" realisieren
Zitat von TobiasWenn der String weniger als 30 Zeichen enthält wird die URL ungekürzt zurückgegeben, gesamter Code:
Code:$text = ("Die phpfriend.de-Tutorials: http://phpfriend.de/forum/viewforum....r30zeichensind"); $text = preg_replace_callback("|\[url\](http://)(.*)\[/url\]|Uism",create_function('$matches','if (strlen($matches[2]) > 30) return "<a href=\"http://".$matches[2]."\" target=_blank>http://".substr($matches[2],0,17)."[...]".substr($matches[2],-5)."</a>"; else return "<a href=\"http://".$matches[2]."\" target=_blank>http://".$matches[2]."</a>";'),$text);
Callbacks sind eine feine Sache.
create_function() ist auch ganz niedlich.
Wenn man das ganze aber nicht mehr lesen kann, war es ein Griff ins Klo ^^
Erst nach dem Auseinanderpflücken, konnte ich sehen, was du da eigentlich treibst.
Und ich bin mir jetzt mal nicht so ganz sicher, ob $matches[2] der richtige Index ist ... 1 wäre mein Kandidat ...
Code:<?php $text = preg_replace_callback('|\[url\](http://)(.*)\[/url\]|Uism', 'callBack_bbUrl', $text); function callBack_bbUrl($matches) { if (strlen($matches[2]) > 30) { return 'http://'.substr($matches[2],0,17).'[...]'.substr($matches[2],-5).''; } else { return 'http://'.$matches[2].''; } } ?>
Einen Kommentar schreiben:
-
Re: "BB-Code" realisieren
Zitat von TobiasU: Dadurch wird verhindert, dass vom ersten [b] bis zum letzten [/b] ersetzt wird
Greedy = gierig
Ohne U-Modifier wird PHP versuchen soviele Chars einzufangen wie nur möglich, bis es kein mögliches Ende des Patterns mehr findet.
Zitat von Tobiass: Dadurch kann man auch mit \r\n usw. arbeiten
Dieser Meta-Char ist eine Wildcard und passt auf alles. Ausser eben NewLines ... der s-Modifier ändert dies.
Zitat von Tobiasm: Durch diesen Modifier werden die Replacements auch auf mehrere Zeilen angewandt.
Es bezieht sich auf PHPs erkennung von Zeilen-Ende und -Anfang.
Ohne m-Modifier gibt es nur String-Ende und -Anfang. Diese werden über ^ bzw. $ angesprochen.
Im MultiLine-Mode erkennt PHP NewLines und erweitert damt die Wirkung von ^ und $ ..
Einen Kommentar schreiben:
Einen Kommentar schreiben: