URL: https://www.overclockers.at/coding-stuff/html_to_ubb_prob_146573/page_1 - zur Vollversion wechseln!
Hallo Leute,
ich verwende folgendes um aus html code wieder ubb code zu machen:
Code: PHP$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);
darf ich fragen wieso du aus html code wieder ubb code machen willst?
Zitat von iCA-darf ich fragen wieso du aus html code wieder ubb code machen willst?
und wieso schreibst du nicht gleich den ubb code in die db und wandelst es vorm ausgeben in html um?
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.
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?
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
Sodala ... nach langem rumspielen geht das jetzt auch endlich.
Das Problem lag im Escapen von \ und < Zeichen
Code: PHPfunction 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; }
Darf ich anmerken dass deine Regexp's nicht vollständig sind?
wie meinst du das?
<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:
Code: PHPfunction 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; }
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
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.Zitat von MaehmannAlso das ersetzen von <b></b> innerhalb des des Links erledigt eine str_replace ...
Zitat von watchoutWas ü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.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025