Hallo,
ich habe da mal ein Problem.
Ich habe folgende Funktion für meine Syntax BBCodes
Alles anzeigen
Das Problem ist nun, darauf konnte ich es eingrenzen, das Code der Länger als 12 Zeilen ist nicht verarbietet wird, der Apache stürzt ab.
Ist der Code kürzer als 12 Zeilen klappt dies. Ist kein Code vorhanden sondern nur reiner Text so klappt dies ebenfalls.
Was könnte an diesem Code Falsch sein?
ich habe da mal ein Problem.
Ich habe folgende Funktion für meine Syntax BBCodes
Quellcode
- function bbcode_replace($string) {
- $old_string = array();
- while ($old_string != $string) {
- $old_string = $string;
- $string = preg_replace_callback('{\[(\w+)((=)(.*)|())\]((.|\n)*)\[/\1\]}U', 'bbcode_callback', $string);
- }
- return $string;
- }
- function bbcode_callback($matches) {
- $tag = trim($matches[1]);
- $inner_string = $matches[6];
- $argument = $matches[4];
- switch ($tag) {
- case 'php':
- $source = $inner_string;
- $language = 'php';
- $source = str_replace('"', '"', $source);
- $source = str_replace(">", ">", $source);
- $source = str_replace("<br />", "", $source);
- $source = str_replace("<", "<", $source);
- $source = str_replace("&", "&", $source);
- $geshi = new GeSHi($source, $language);
- $geshi->enable_keyword_links(true);
- $source = $geshi->parse_code();
- return '<div class="codebox"><div class="codebox_title">'.$language.'</div><div class="codebox_content">'.$source.'</div></div>';
- break;
- case 'css':
- $source = $inner_string;
- $language = 'css';
- $source = str_replace('"', '"', $source);
- $source = str_replace(">", ">", $source);
- $source = str_replace("<br />", "", $source);
- $source = str_replace("<", "<", $source);
- $source = str_replace("&", "&", $source);
- $geshi = new GeSHi($source, $language);
- $geshi->enable_keyword_links(true);
- $source = $geshi->parse_code();
- return '<div class="codebox"><div class="codebox_title">'.$language.'</div><div class="codebox_content">'.$source.'</div></div>';
- break;
- // weitere für html4, html5, mysql etc.
- default: // unknown tag => reconstruct and return original expression
- $replacement = '[' . $tag . ']' . $inner_string . '[/' . $tag . ']';
- break;
- }
- return $replacement;
- }
Das Problem ist nun, darauf konnte ich es eingrenzen, das Code der Länger als 12 Zeilen ist nicht verarbietet wird, der Apache stürzt ab.
Ist der Code kürzer als 12 Zeilen klappt dies. Ist kein Code vorhanden sondern nur reiner Text so klappt dies ebenfalls.
Was könnte an diesem Code Falsch sein?