Archiv verlassen und diese Seite im Standarddesign anzeigen : Regex und BBCodes
eigentlich brauch ichs ja in PHP.. aber sowas gehört ja eigentlich zu perl ;)
und zwar möchte ich ne ´regex-syntax´ wo ich von einem string z.B. "test das ist ein test " in test <center> das ist ein test </center>" umgewandelt wird.. (jetzt aber ned nur auf die Eckigen-Klammern gehen, sondern auf den ganzen Tag..
so long
cYrus
Dominic Suter
31.03.2002, 00:13
Verstehe ich dich richtig: Du willst die [] Klammern in <> Klammern wandeln, um aus dem UBB Code HTML Code zu erzeugen?
Willst du das ganze nun in Perl oder PHP??
ich brauch nur den Ausdruck, is ja in PHP gleich wie in Perl..
aber eben ned nur [ ] durch < > ersetzen sondern den GANZEN Tag
so long
cYrus
Dominic Suter
31.03.2002, 00:38
Warum kannst nicht einfach die [] mit ereg_replace ersetzten?
Nun eine Loesung waere naturlich eine if Konstruktion, bei der alle moeglichen Tags aufgefuehrt sind und anschliessend gesamthaft ersetzt werden. z.Bsp.
<?PHP
$ZuErsetzen = strolower($DeinUBBCode);
case ($ZuErsetzen = "[Center]")
{
$Ersetzt = eregi ("<center>", $ZuErsetzen);
break;
}
....
echo $Ersetzt;
?>
Ob das allerdings auch unter Perl funktioniert ?(
weil es dann mal noch andere tags gibt wie meine Url (http://www.microsoft.com) usw.. und ich einfach mal nen grundbaustein haben möchte, damit ich dann mal noch bisschen selber ausprobieren könnte..
so long
cYrus
dachte eigentlich eher an einen komplexeren Code, der mir dann die beiden Tags in eienm Befehl ersetzt und sie nur dann ersetzt, wenn auch beide drin sind..
so long
cYrus
also ..
das was du vorhast, wüsste ich nicht, wie ich´s in regex machen würde ...
\[.*\] wäre imho der richtige audruck...das problem ist... wenn du jetzt ein substitute machst also z.b. s/\[.*\]/\<.*\>/g ... hast du das problem das du das .* in der 2ten hälfte des substitutes so nicht verwenden darfst ... du kannst nicht durch .* ersetzen ... :(
http://www.oreilly.de/catalog/regexger/ <-- das ist ein super buch dafür ... leider bringts dir in dem fall sicher nicht viel ...
und regex gehören nicht zu perl sondern zur allgemeinbildung *G*
Naja, also so hatte ich daß mal für ein Gästebuch gemacht:
$string =~ s/([url=http:\/\/)(.+?)(])(.+?)([\/url])/<a href="http:\/\/$2" target="_blank">$4<\/a>/ig;
$string =~ s/([url=)(.+?)(])(.+?)([\/url])/<a href="http:\/\/$2" target="_blank">$4<\/a>/ig;
$string =~ s/(\<br\>{1,}|\s|^.{0})(http:\/\/.+?)(\<br\>{1,}|\s|.{0}$)/$1<a href="$2" target="_blank">$2<\/a>$3/ig;
$string =~ s/(\<br\>{1,}|\s)(www\..+?)(\<br\>{1,}|\s|.{0}$)/$1<a href="http:\/\/$2" target="_blank">$2<\/a>$3/ig;
$string =~ s/([mail=)(.+?)(])(.+?)([\/mail])/<a href="mailto:$2">$4<\/a>/ig;
$string =~ s/([pic=http:\/\/)(.+?)(])/<img src="http:\/\/$2" border="0" alt="pic">/ig;
$string =~ s/([pic=)(.+?)(])/<img src="http:\/\/$2" border="0" alt="pic">/ig;
$string =~ s/([i])(.+?)([\/i])/<i>$2<\/i>/ig;
$string =~ s/([b])(.+?)([\/b])/<b>$2<\/b>/ig;
Passt das? :)
thx @ Jones
ich werd mir das mal zuerst entschlüsseln *fg*
so long
cYrus
Wenn du irgend ne Stelle net checkst, frag im IRC oder so ;)
Oder lies mal bei SelfHTML im Kapitel Perl das über Reguläre Ausdrücke, das sollte auch helfen :)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.