Maehmann
OC Addicted
|
Hallo Leute, ich verwende folgendes um aus html code wieder ubb code zu machen: $str = eregi_replace("\<b\>", '[b]', $str);
$str = eregi_replace("\</b\>", '[/b]', $str);
$str = eregi_replace("\<i\>", '[i]', $str);
$str = eregi_replace("\</i\>", '[/i]', $str);
$str = eregi_replace("\<u\>", '[u]', $str);
$str = eregi_replace("\</u\>", '[/u]', $str);
$str = eregi_replace("\\<a href=\"([^\\[\"]*)\"\\ target=\"_blank\">([^<\[]*)</a>","[url=\\1]\\2[/url]", $str);
$str = eregi_replace("\\<a href=\"mailto:([^\\[]*)\"\\>([^<\[]*)</a>","[email=\\1]\\2[/email]",$str);
$str = eregi_replace("\\<img src=\"([^\\[]*)\"\\ border=0>([^<\[]*)","[img]\\1[/img]",$str);
$str = eregi_replace("\<br />", '', $str);
Das funktioniert bei mir daheim auch tadellos. Dann hab ich heute das Ganze auf dem Webspace getestet und der macht nur Blödsinn draus. Zum Beispiel: <b> ---> <[b]> statt [b] </b> ---> </[b]> <a href="mailto:jane.doe@unkown.com">Jane Doe</a> ändert er garnicht. <br /> ---> < usw. Ich hab leider keine ahnung woran das liegt? Hatte schon einmal jemand so ein Problem? Oder noch besser, weiß jemand wie man das Problem umgeht? Btw.: Es ist absicht, dass nur ein Teil des Ubb Codes unterstützt wird. *tia* Christoph
Bearbeitet von Maehmann am 30.07.2005, 15:28
|
ica
hmm
|
darf ich fragen wieso du aus html code wieder ubb code machen willst?
|
Maehmann
OC Addicted
|
darf ich fragen wieso du aus html code wieder ubb code machen willst? Ja Nachdem das formular abgeschickt wurde, wird der inhalt in html umgewandelt und ausgeben und anschließend in die db gschrieben. Wenn ich den eintrag jetzt editieren will, muss der html code für den benutzer wieder in ubb umgewandelt werden. wie gesagt, daheim hat alles funktioniert ... ich verstehe nicht wo das problem ist.
|
ica
hmm
|
und wieso schreibst du nicht gleich den ubb code in die db und wandelst es vorm ausgeben in html um?
|
Maehmann
OC Addicted
|
das ist natürlich auch möglich ... ich habs aber anders gemacht. so muss ich viel seltener das umwandeln machen ...
aber wenn ich das mit dem dekodieren nicht hinbekomm, dann muss ichs eh so machen ...
Ich habs daheim getestet geht, auf meinem webspace gehts auch.
|
watchout
Legendundead
|
verwend besser die preg_* Functions, sind schneller, können mehr und... ja preg kann ich dir helfen - eregi is mir suspekt bzw. bei solchen $str = eregi_replace("<b>", '[b]', $str); Zeilen verwendest besser str_replace - weil das is überhaupt noch viel schneller. edit: ich dachte am webspace gehts nicht?
|
Maehmann
OC Addicted
|
Sorry, das war vielleicht missverständlich ... auf meinem webspace gehts, auf dem wos laufen soll, gehts nicht PHP Version daheim: 5.0 Mein Space: PHP Version 4.3.11 Der blöde Space: Hardened-PHP Version 4.3.10/0.2.6 Ich werd mir das mal anschauen mit den anderen Funktionen. Edit: Offensichtlich liegt es an unterschiedlichen Regex Systemen. Alle Server auf denen das Ganze funktioniert haben "--enable-mbregex" Wos nicht geht hat "--with-regex=system" als Configure Command. Sehr ärgerlich
Bearbeitet von Maehmann am 28.07.2005, 11:38
|
Maehmann
OC Addicted
|
Sodala ... nach langem rumspielen geht das jetzt auch endlich. Das Problem lag im Escapen von \ und < Zeichen function decodeUbb($str) {
$str = eregi_replace("<a href=\"([^\\[\"]*)\"\ target=\"_blank\">([^<\[]*)</a>","[url=\\1]\\2[/url]", $str);
$str = eregi_replace("<a href=\"mailto:([^\\[]*)\">([^<\[]*)</a>","[email=\\1]\\2[/email]",$str);
return $str;
}
Das funktioniert überall. Christoph Edit: Irgendwie verhunzt der PHP Tag die UBB Sachen ... hab den teil rausgenommen
Bearbeitet von watchout am 28.07.2005, 13:25
|
watchout
Legendundead
|
Darf ich anmerken dass deine Regexp's nicht vollständig sind?
|
Maehmann
OC Addicted
|
wie meinst du das?
|
watchout
Legendundead
|
<a href='...'>[Click Here]</a> wird nicht gematched so wie ich das sehe, was aber eigentlich valid ist. ausserdem erlaubt es keine "[" im Link - wobei das ja ein Grenzbereich ist, weil die auch in URLs nicht vorkommen dürften - aber dann dürften auch keine "]" erlaubt sein... weiters matched <a href="">aasd <b>abasda</b></a> nicht, ist aber valid. besser lesbar: function decodeUbb($str) {
$str = eregi_replace(
"<a href=\"([^\\[\"]*)\"\ target=\"_blank\">([^<\[]*)</a>",
"[u"."rl=\\1]\\2[/url]", $str);
$str = eregi_replace(
"<a href=\"mailto:([^\\[]*)\">([^<\[]*)</a>",
"[e"."mail=\\1]\\2[/email]",$str);
return $str;
}
|
Maehmann
OC Addicted
|
Also das ersetzen von <b></b> innerhalb des des Links erledigt eine str_replace ... Aber das mit den [] ist leider richtig =/ da muss ich noch mal drüber gehen. Leider bin ich nicht der regex guru. aber das wird schon
|
watchout
Legendundead
|
Also das ersetzen von <b></b> innerhalb des des Links erledigt eine str_replace ... Was übrigens eigentlich auch schlecht is', denn du ersetzt blind <b> durch [b] und zurück - wenn jetzt jemand ein einzelnes [b] postet, ist der gesamte Text danach Fett, was natürlich unangenehm ist.
|
Maehmann
OC Addicted
|
Was übrigens eigentlich auch schlecht is', denn du ersetzt blind <b> durch [b] und zurück - wenn jetzt jemand ein einzelnes [b] postet, ist der gesamte Text danach Fett, was natürlich unangenehm ist. nope ... mit einem einfach str_replace mach ich nur <b> zu [ b ] [ b ] zu <b> macht er über eine regex bei der sowohl ein [ b ] als auch ein [ / b ] sein müssen ... wenn das nicht der fall ist bleibt [ b ] einfach stehen.
|