CGollhardt
Mitglied
Guten Abend,
ich habe geradeeben eine Funktion geschrieben, mit der BBCode-PHPCode gehighlighted wird. Nun ist es aber so, dass diese Funktion bei sehr vielen Zeichen (Teststring count -> 13000) nicht mehr funktioniert.
Erstmal hier die Funktion
Nun habe ich gedacht, es könnte sein, dass PHP bei solangen Strings nicht mehr mit str_replace() arbeiten kann.
Folgende Testschleife kamm jedoch bis zum 60 Sekunden Timeout bis zu 35000. Dies wiederlegt es meiner Meinung nach:
Als nächstes dachte ich an preg_replace, aber der Restliche BBCode funktioniert mit dem gesamten String auch.
Teststring Sieht ungefähr so aus:
[/code]
Kann die Variable ARG3 in preg_match(ARG1, ARG2, ARG3) vielleicht nicht so viel speichern?
Wusste nicht wie ich das jetzt testen kann
ich habe geradeeben eine Funktion geschrieben, mit der BBCode-PHPCode gehighlighted wird. Nun ist es aber so, dass diese Funktion bei sehr vielen Zeichen (Teststring count -> 13000) nicht mehr funktioniert.
Erstmal hier die Funktion
PHP:
function bbcode_code ($str) {
if (preg_match ('/\[code\](.*?)\[\/code\]/is', $str, $codeVar) > 0) {
for ($i = 1; $i < count($codeVar); $i++) {
$originalString = html_entity_decode($codeVar[$i], ENT_QUOTES, 'UTF-8');
$originalString = htmlspecialchars_decode($originalString, ENT_QUOTES);
$str = str_replace ('[code]' . $codeVar[$i] . '[/code]', highlight_string($originalString, true), $str);
}
}
return $str;
}
Nun habe ich gedacht, es könnte sein, dass PHP bei solangen Strings nicht mehr mit str_replace() arbeiten kann.
Folgende Testschleife kamm jedoch bis zum 60 Sekunden Timeout bis zu 35000. Dies wiederlegt es meiner Meinung nach:
PHP:
for ($i = 10000; $i <= 1000000; $i++) {
$buchstaben = '';
for ($x = 1; $x <= $i; $x++) {
$buchstaben.= 'a';
}
echo str_replace ($buchstaben, strlen($buchstaben) . ' Zeichen konnten ersetzt werden!</br />', $buchstaben);
}
Als nächstes dachte ich an preg_replace, aber der Restliche BBCode funktioniert mit dem gesamten String auch.
Teststring Sieht ungefähr so aus:
Code:
Normaler BBCode, Fett, unterstrichen, link etc. dann
[code]Sehr sehr viel code
Kann die Variable ARG3 in preg_match(ARG1, ARG2, ARG3) vielleicht nicht so viel speichern?
Wusste nicht wie ich das jetzt testen kann