PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Regex und BBCodes


cYrus
31.03.2002, 00:08
eigentlich brauch ichs ja in PHP.. aber sowas gehört ja eigentlich zu perl ;)

und zwar möchte ich ne &acute;regex-syntax&acute; wo ich von einem string z.B. &quot;test das ist ein test &quot; in test <center> das ist ein test </center>&quot; 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??

cYrus
31.03.2002, 00:30
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 = &quot;[Center]&quot;)
{
$Ersetzt = eregi (&quot;<center>&quot;, $ZuErsetzen);
break;
}
....
echo $Ersetzt;
?>

Ob das allerdings auch unter Perl funktioniert ?(

cYrus
31.03.2002, 00:44
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

cYrus
31.03.2002, 01:00
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

Bauchi
31.03.2002, 01:46
also ..
das was du vorhast, wüsste ich nicht, wie ich&acute;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*

Jonas
01.04.2002, 01:13
Naja, also so hatte ich daß mal für ein Gästebuch gemacht:
$string =~ s/([url=http:\/\/)(.+?)(])(.+?)([\/url])/<a href=&quot;http:\/\/$2&quot; target=&quot;_blank&quot;>$4<\/a>/ig;
$string =~ s/([url=)(.+?)(])(.+?)([\/url])/<a href=&quot;http:\/\/$2&quot; target=&quot;_blank&quot;>$4<\/a>/ig;
$string =~ s/(\<br\>{1,}|\s|^.{0})(http:\/\/.+?)(\<br\>{1,}|\s|.{0}$)/$1<a href=&quot;$2&quot; target=&quot;_blank&quot;>$2<\/a>$3/ig;
$string =~ s/(\<br\>{1,}|\s)(www\..+?)(\<br\>{1,}|\s|.{0}$)/$1<a href=&quot;http:\/\/$2&quot; target=&quot;_blank&quot;>$2<\/a>$3/ig;
$string =~ s/([mail=)(.+?)(])(.+?)([\/mail])/<a href=&quot;mailto:$2&quot;>$4<\/a>/ig;
$string =~ s/([pic=http:\/\/)(.+?)(])/<img src=&quot;http:\/\/$2&quot; border=&quot;0&quot; alt=&quot;pic&quot;>/ig;
$string =~ s/([pic=)(.+?)(])/<img src=&quot;http:\/\/$2&quot; border=&quot;0&quot; alt=&quot;pic&quot;>/ig;
$string =~ s/([i])(.+?)([\/i])/<i>$2<\/i>/ig;
$string =~ s/([b])(.+?)([\/b])/<b>$2<\/b>/ig;
Passt das? :)

cYrus
02.04.2002, 07:45
thx @ Jones

ich werd mir das mal zuerst entschlüsseln *fg*

so long
cYrus

Jonas
02.04.2002, 10:20
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 :)