Archiv verlassen und diese Seite im Standarddesign anzeigen : [Funktion] bbcode script
ich hab hier einen netten kleinen Script. Den hab ich irgendwann mal irgendwo raus gezogen.
allerdings muss ich jezt feststellen das der nicht funzt.
also: es ist ne kleine BB Code funktion und läuft nicht - kann mir jmd weiter helfen?
<?php
function textFormat($input) {
$input = htmlspecialchars($input);
$input = nl2br($input);
$bbcode = array(
"/\[b\](.*?)\[\/b\]/si",
"/\[i\](.*?)\[\/i\]/si",
"/\[u\](.*?)\[\/u\]/si",
"/\[url\](.*?)\[\/url\]/si" ,
"/\[url=(.*?)\](.*?)\[\/url\]/si" ,
"/\[img\](.*?)\[\/img\]/si",
"/\[mail\](.*?)\[\/mail\]/si" ,
"/\[mail=(.*?)\](.*?)\[\/mail\]/si" ,
"/\[code\](.*?)\[\/code\]/si",
"/\[zitat\](.*?)\[\/zitat\]/si",
"/\[center\](.*?)\[\/center\]/si",
);
$replace = array(
"<b>\\1</b>",
"<i>\\1</i>",
"<u>\\1</u>",
"<a target=_blank href=\"\\1\">\\1</a>",
"<a target=_blank href=\"\\1\">\\2</a>",
"<img src=\"\\1\" alt=\"\\1\" />",
"<a href=\"mailto:\\1\">\\1</a>",
"<a href=\"mailto:\\1\">\\2</a>",
"<b>code:</b><table class='code'><tr><td>\\1</td></tr></table>",
"<b>zitat:</b><table class='zitat'><tr><td>\\1</td></tr></table>",
"<div align='center'>\\1</div>",
);
$bbcode_count = count($bbcode);
for ($i=0;$i<$bbcode_count;$i++) {
$input = preg_replace($bbcode[$i], ''.$replace [$i].'', $input);
}
return $input;
}
textFormat($input) ;
?>
nebenbei... weiß jmd etwas ähnlich einfach gestricktes für php?
also ich meine wie die bbcode php funktion hier...[PHP]
Bauergiesen 19-03-2006, 23:57 Eine kurze Form von mir:
<?
function bbreplace($string)
{
$string =addslashes(nl2br(strip_tags(trim($string))));
$string = strip_tags($string);
$string = str_replace("[ b ]","<b>",$string);
$string = str_replace("[ u ]","<u>",$string);
$string = str_replace("[ /b ]","</b>",$string);
$string = str_replace("[ /u ]","</u>",$string);
$string = str_replace("[ i ]","<i>",$string);
$string = str_replace("[ /i ]","</i>",$string);
// Smilyeinsatz
$string = str_replace(":-)","<img src=images/smilies/001.gif>",$string);
return $string;
}
?>
Die Leerzeichen bei dem Suchkriteriem müssen noch gelöscht werden. Sind nur da mit der BBCode des Forums nicht anspringt.
Viel Spaß damit
MfG
Bauer
wo bei deine version das fast wichtigste nicht hat: die link formatierung...
Bauergiesen 20-03-2006, 15:47 Linkformatierung sieht wie folgt aus:
$string = preg_replace("/\[url](.*)\[\/url\]/siU","<a href=\"\\1\" target=\"_blank\">\\1</a>",$string);
$string = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\">\\2</a>",$string);
MfG
Bauer
jetzt noch eins: kannst du mir genau aufschlüssel, was genau du tust?
weil ich es lieber wirklich genau verstehen möchte - ich würde es gerne
noch ausarbeiten und um eine php umwandlung erweitern :D
macht der eigentlich auch <br> ? kannst du mir sagen wie ich den anbaue?
Bauergiesen 20-03-2006, 15:57 lies dir mal folgenden Artikel durch
http://de.php.net/preg_replace
Aufgerufen wird die Funktion mit:
[ URL ]http://test.de[ /URL ]
oder
[ URL=http://test.de ]Name[ /URL ]
MfG
Bauer
ok... ich frag einfach mal genauer nach:
wie setzt sich das zusammen, das steht das nämlich nicht:
<?
// Was bedeuetet das? --------####------####--------------#----------------------#--------------
$string = preg_replace("/(.*)/siU","<a href=\"\1\" target=\"_blank\">\1</a>",$string);
// Was bedeuetet das? --------#####-#####------###--------------#----------------------#--------------
$string = preg_replace("#(.*?)#si","<a href=\"\1\" target=\"_blank\">\2</a>",$string);
?>
kucks dir in deinem editor an, hier wirds scheiße dargestellt!
Bauergiesen 20-03-2006, 16:23 Tschuldigung. Das übliche Problem.
Ich hänge dir den Quelltext mal an.
MfG
Bauer
ich meine jetzt, was die zahlen und .* und .*? bedeutet...
Also eins muss man Bauergiesen ja lassen, klasse ausdauer.
das zauberwort heisst wohl: regular expression
Schau dir doch mal den link hier an:
regular expression mit php (http://www.infos24.de/phpe/handbuch/6_php_regular_expression.htm)
da sollte dir geholfen werden.;)
jahlives 20-03-2006, 18:58 Oder einfach :rtfm: Stichwort Modifikatoren + Synthax
Gruss
tobi
wo was wie? immerher damit!!!
jahlives 20-03-2006, 19:41 Also damit du vor lauter Suchen nicht das Augenlicht verlierst ;) hier nochmals direkt verlinkt
Modifikatoren (http://us3.php.net/manual/de/reference.pcre.pattern.modifiers.php) und Synthax (http://us3.php.net/manual/de/reference.pcre.pattern.syntax.php)
Gruss
tobi
p.s. der rtfm Smilie war auch damit verlinkt
Sorry, jetzt habe ich deinen Beitrag versehentlich überschrieben ...
Originalbeitrag war etwas in der Art:
Meldung "unknown Modifier 'r' in ..." bei
preg_replace('/[ url](.*)[/url]/...'
Dein Delimiter taucht unmaskiert mitten im Suchausdruck auf, und deshalb endet dieser dort. Das nachfolgende 'u' ist noch ein bekannter Modifier - aber 'r' gibt's nicht ...
sorry wahsaga.
ich weiß das ich hier das ein oder andere fettnäpfchen erwischt habe.
aber was bitte soll das, das du einfach meinen post änderst, ohne eine
angabe wieso?
ich will wirklich kein stress hier und ich denke das du wahrscheinlich
auch recht angesehen hier bist - aber damit stellst du dich in meinen
augen auf eine stufe mit einem anderen, bestimmten, moderator hier.
leider kann mir jetzt auch keiner mehr helfen, da du ja denn text gelöscht
hast und dieser damit für andere hilfbereite leute nicht mehr einsehbar
ist!
Original geschrieben von xJonx
aber was bitte soll das, das du einfach meinen post änderst, ohne eine
angabe wieso?
OMG ... ich schrieb doch, dass es ein Versehen war - muss ich für ein solches jetzt auch noch einen "Grund" angeben ...?
Na schön:
Da in deinem Suchmuster die url-Tags auftauchten, wie sie die Forumsoftware hier auch verwendet, wurde das in folgendes Umgewandelt:
preg_replace('/(.*)/...', ...);
Entsprach das dem, was du eigentlich darstellen wolltest? Wohl eher nicht. [1]
Da ich mir aber schon dachte, dass die Forumssoftware hier wieder mal übereifrig war, wollte ich mir deine Eingabe im Original ansehen - also habe ich auf "ändern" geklickt, um möglichst unverändert das zu sehen zu bekommen, was du ursprünglich eingegeben hattest.
Da mir dadurch die Ursache des Problems sofort klar war, fing ich an, eine Antwort zu verfassen - und habe dabei leider vergessen, dass ich gerade im "ändern"- und nicht im "zitieren"-Modus war.
So, reicht das jetzt als Erklärung, warum du hier so unfair behandelt wirst ...?
*seufz*
leider kann mir jetzt auch keiner mehr helfen, da du ja denn text gelöscht hast und dieser damit für andere hilfbereite leute nicht mehr einsehbar ist!
Du hast doch bereits ein hilfreiche Antwort von mir bekommen!
Man, erst mal wieder meckern, und dabei auf das wirklich hilfreiche gar nicht eingehen ...
[1] Btw: Wenn du dir deine eigenen Postings nach dem Absenden noch mal anschauen würdest, hätte das dir übrigens auch selbst auffallen können. Aber das ist bei den meisten hier ja auch zu viel verlangt - schnell Frage posten, möglichst wenig Aufwand ...
|
-
- |