Zeichenbegrenzung in array

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Zeichenbegrenzung in array

Postby Markus1979 » 27. November 2011 19:48

Hallo zusammen,

ich habe ein php funktion um bbcodes umzuwandeln...

ich benutze es schon sein langer zeit auf Xampp und auf verschiedenen webspaces, bisher absolut ohne probleme.

Ich benutze seit kurzen die aktuelle Xampp version, unud dort läuft das script nicht mehr.

ich bekomme keine fehlermeldung von php sondern nur vom browser, dass die seite nicht angezeigt werden kann...

es funktioniert nur wenn innerhalb der bbcode tag nicht mehr als ~ 610 zeichen sind...

wie gesagt, dass problem hatte ich her noch nie... und 610 zeichen kann ja eigentlich kein großes problem sein...

wurde irgendwas in der richtung an xampp geändert, was dieses problem verursachen kann?

viele grüße
Markus
Markus1979
 
Posts: 7
Joined: 13. November 2011 18:37
Operating System: win7 ultimate

Re: Zeichenbegrenzung in array

Postby Nobbie » 27. November 2011 21:37

So wird nichts, das ist zu wenig. Entweder debuggst Du vernünftig oder zeigst hier den Source - mit absoluter Sicherheit hat Xampp (PHP) kein Problem mit Arrays einer Länge von 610 Byte o.ä.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Zeichenbegrenzung in array

Postby Markus1979 » 27. November 2011 22:07

Hallo Nobbie,

hier mal mein (Test)script...

Code: Select all
function bbcode($string) {
    $old_string = "";
        while($old_string != $string) {
            $old_string = $string;
            $string = preg_replace_callback('{\[(\w+)((=)(.+)|())\]((.|\n)*)\[/\1\]}U', 'bbcode_callback', $string);
        }
    return nl2br($string);
}

function bbcode_callback($matches) {

    $tag = trim($matches[1]);
    echo strlen($matches[6])."<br><br>";
    $inner_string = $matches[6];
    $argument = $matches[4];

    switch($tag) {
        case 'B': $replacement = "<$tag>".$inner_string."</$tag>";
        break;
        case 'COLOR':
            $color = $argument ? $argument : $inner_string;
            $replacement =  "<span style=\"color:" . $color . ";\">" . $inner_string . "</span>";
        break;
        case 'SIZE':
            $size = $argument ? $argument : $inner_string;
            $replacement =  '<span style="font-size:' . $size . 'px;">' . $inner_string . '</span>';
        break;

    }
    return $replacement;
}


$test1 = '[B]TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TE[/B]';

$test2 = '[COLOR=#990000]TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST [/COLOR]';

$test3 = '[SIZE=20]TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
TEST TEST TEST TEST TEST TEST TEST TEST [/SIZE]';


echo bbcode($test1);

echo strlen($test1);

// $test 1: String gesamt = 619 Zeichen; eigentlicher Text = 612 Zeichen
// $test 2: String gesamt = 633 Zeichen; eigentlicher Text = 610 Zeichen
// $test 3: String gesamt = 626 Zeichen; eigentlicher Text = 610 Zeichen 



Wie schon geschreiben, ich nutze diese funktion schon sehr lange, auf Xampp und auf verschiedenen Servers.
Ich war ganz überrascht, dass es plötzlich nicht mehr funktioniert.

Ich dachte, dass vielleicht irgendwelche Ändrungen in PHP vorgenommen wurden, die diesen fehler verursachen kann.

Bei weiteren Tests ist mir augefallen, dass es def. nur an der anzahl der zeichen liegt innerhalb der bbcode-tags liegt ($matches[6])...

wie lange der string insgesamt ist, ist völlig egal...

auch ein string mit über 5 Millionen zeichen OHNE bbcodes ist zum test ohne probleme durch die Funktion gelaufen !
Bei mehre bbcode-tags von ca 30-40 Zeichen wird die seite auch einwandfrei angezeigt, sobald ein bbcode-tag mehr als ~ 620 Zeichen kann wir die seite nicht angezeigt...

Leider bekomme ich auch keine php fehlermeldung... Die fehlermeldmung kommt von Browser, in dem Fall Firefox mit der Meldung "Fehler: Verbindung unterbrochen. Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde....

Hast du vielleicht eine Idee woran es liegen könnte?

Vielen Dank schon mal

Markus
Markus1979
 
Posts: 7
Joined: 13. November 2011 18:37
Operating System: win7 ultimate


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 37 guests