Problem mit PHP Highlighter
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Also ich aheb eine BBCode tag/funktion">Funktion geschrieben:
Also test.php:
error_reporting(E_ALL); include('function/function/bbcode.php'); echo '<link rel="stylesheet" type="text/css" href="style/style.css"/>'; $string2 = '[ php]echo "hallo";[ /php]'; $string2 = bbcode($string2); echo $string2;
So und hier meine BBCODE Funktion:
<?php function bbcode ($bbcode) { $bbcode=preg_replace("/\[ b\](.*?)\[\/ b\]/si", "<b>\\1</b>", $bbcode); $bbcode=preg_replace("/\[ i\](.*?)\[\/ i\]/si", "<i>\\1</i>", $bbcode); $bbcode=preg_replace("/\[ s\](.*?)\[\/ s\]/si", "<s>\\1</s>", $bbcode); $bbcode=preg_replace("/\[ u\](.*?)\[\/ u\]/si", "<u>\\1</u>", $bbcode); $bbcode=preg_replace("/\[ url\](.*?)\[\/ url\]/si", "<a href=\\1 target=_blank>\\1</a>", $bbcode); $bbcode=preg_replace("/\[ email\](.*?)\[\/ email\]/si", "<a href=mailto:\\1>\\1</a>", $bbcode); $bbcode=preg_replace("/\[ img\](.*?)\[\/ img\]/si", "<img src=\\1>", $bbcode); $bbcode=preg_replace("/\[color=(.*?)\](.*?)\[\/color\]/si", "<span style=color:\\1;>\\2</span>", $bbcode); $bbcode=preg_replace("/\[size=(.*?)\](.*?)\[\/size\]/si", "<span style=font-size:\\1px;>\\2</span>", $bbcode); $bbcode=preg_replace("/\[ code\](.*?)\[\/ code\]/si", "<center><div id=code_header>Code:</div><div id=code_content>\\1</div></center>", $bbcode); $bbcode = preg_replace("/\[ php\](.*?)\[\/ php\]/si", "<pre>".highlight_string("\\1", true)."</pre>", $bbcode); $bbcode = nl2br ($bbcode); return $bbcode; } ?>
Nat?rlich ohne die Leerzeichen.
Aber der Teil wird nicht gehighlightet ausgeben.
Sondern zwar ind den Divs und auch ohne die [php][/php] Tags aber nicht bund. Und ich kann einfach nicht meinen Fehler finden.
K?nnt ihr mir helfen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Omg...naja zu der Funktion an sich sage ich erstmal nichts. (Au?er, dass sie schrecklich ist...)
Naja, aber ich habe wenigstens den Fehler gefunden. (Glaube ich zumindest) Der wurde doch sogar direkt ausgegeben oder? Da m?sste ungef?r folgendes gestanden haben.
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\apachefriends\xampp\htdocs\test.php(45) : regexp code on line 5
Da steht doch schon, dass da ein Backslash im regex zu viel ist. stripslashes() d?rfte abhilfe schaffen.
Ach und eine Bitte noch. Fange bitte immer deine PHP-Dateien mit "<?php" an...
<?php function bbcode ($bbcode){ $search = array( '`\[b\](.*)\[\/b\]`Usi', '`\[u\](.*)\[\/u\]`Usi', '`\[i\](.*)\[\/i\]`Usi', '`\[s\](.*)\[\/s\]`Usi', '`\[url\](.*)\[\/url\]`Usi', '`\[email\](.*)\[\/email\]`Usi', '`\[img\](.*)\[\/img\]`Usi', '`\[color=(.*)\](.*)\[\/color\]`Usi', '`\[size=(.*)\](.*)\[\/size\]`Usi', '`\[code\](.*)\[\/code\]`Usi', '`\[php\](.*)\[\/php\]`Usie' ); $replace = array( '<b>\\1</b>', '<u>\\1</u>', '<i>\\1</i>', '<s>\\1</s>', '<a href=\\1 target=_blank>\\1</a>', '<a href=mailto:\\1>\\1</a>', '<img src=\\1>', '<span style=color:\\1;>\\2</span>', '<span style=font-size:\\1px;>\\2</span>', '<center><div id=code_header>Code:</div><div id=code_content>\\1</div></center>', "highlight_string(stripslashes('\\1'), true)" ); $bbcode = preg_replace($search, $replace, $bbcode); $bbcode = nl2br($bbcode); return $bbcode; } ?>
-
Ja das war der Fehler.
Warum ist meine Funktion so schlimm und was ist schlimm? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage