Parser und ...
the-FoX
- php
Hallo alle zusammen,
ich hab so meine Probleme mit den regulären Ausdrücken *zugeb* :-(
ich möchte gerne Teile im Text ersetzen. Und zwar geht es darum, dass User Texte schreiben dürfen, HTML aber generell verboten ist. Stattdessen will ich gerne eine eige "Sprache" anbieten, die um einiges beschränkter ist, um Unfug auszuschließen.
erlaubt sein soll fett schreiben usw.
also [b] [/b] ersetzen durch <B> und </B> glaube das bekomm ich noch hin ;-)
aber jetzt das kompliziertere...
wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere Idee hat..) soll daraus
<A HREF="url">linktext</A> werden
und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll möglich sein festzulegen, wo das bild ausgerichtet ist..rechts doer links
kann mir da jemand weiter helfen ?! :-/
Noch eine weitere Frage...
was ist der UNterschied zwischen require und include ?!
ciao the-FoX und..
tausend Dank schon mal
Hoi,
wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere
Idee hat..) soll daraus
<A HREF="url">linktext</A> werden
Nun, zuerst schauen wir uns mal den String an:
Eckige Klammer auf, link, Doppelpunkt, Klammer auf, Text, URL,
eckige Klammer zu. Das in einen RegEx zu formulieren geht recht
schnell:
/<(.+,[^,>+)]/
Jetzt Backticks ausnutzen und in preg_replace einsetzen:
$text = preg_replace(
'/<((.+),([^,>+))]/',
'<a href="\2">\1</a>',
$text
);
und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll
möglich sein festzulegen, wo das bild ausgerichtet ist..rechts
doer links
Schauen wir uns den String mal an:
Eckige Klammer auf, img gefolgt von einem Doppelpunkt, Klammer auf,
Text, Komma, right oder left, eckige Klammer zu. Das in einem RegEx
auszuformulieren ist nicht schwer:
/[img:([^,]+,(right|left))]/
Wenn du jetzt die Backticks ausnutzt und das in preg_replace
einsetzt, kann das so aussehen:
$text = preg_replace(
'/[img:(([^,]+),(right|left))]/',
'<img src="\1" align="\2">',
$text
);
was ist der UNterschied zwischen require und include ?!
Nur ein historischer. Frueher wurde 'require' auf jedenfall
ausgefuehrt, auch wenns in einem if(false) stand.
Gruesse,
CK
Danke ;-)
ist zwar alle sncoh ein wneig kryptisch, aber du hast es ganz gut erklärt..werd mir das mal zu gemüte führen..
schönen sonntag noch
Hoi,
wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere
Idee hat..) soll daraus
<A HREF="url">linktext</A> werden
Nun, zuerst schauen wir uns mal den String an:
Eckige Klammer auf, link, Doppelpunkt, Klammer auf, Text, URL,
eckige Klammer zu. Das in einen RegEx zu formulieren geht recht
schnell:
/<(.+,[^,>+)]/
Jetzt Backticks ausnutzen und in preg_replace einsetzen:
$text = preg_replace(
'/<((.+),([^,>+))]/',
'<a href="\2">\1</a>',
$text
);
und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll
möglich sein festzulegen, wo das bild ausgerichtet ist..rechts
doer links
Schauen wir uns den String mal an:
Eckige Klammer auf, img gefolgt von einem Doppelpunkt, Klammer auf,
Text, Komma, right oder left, eckige Klammer zu. Das in einem RegEx
auszuformulieren ist nicht schwer:
/[img:([^,]+,(right|left))]/
Wenn du jetzt die Backticks ausnutzt und das in preg_replace
einsetzt, kann das so aussehen:
$text = preg_replace(
'/[img:(([^,]+),(right|left))]/',
'<img src="\1" align="\2">',
$text
);
soweit so gut...einzeln funktioniert es ...auch wenn ich erst das mit [img:()] benutze und dann [link] aber wehe ich benutze erst <()> und dann [img:()] dann gehts nciht =o((
vieleicht kannst du mri ncohmals kurz helfen ?!