Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-11-2011, 16:39   #1 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Zeichenbegrenzung in array

Hallo zusammen,

in nutze die folgende BBcode-Funktion schon sehr lange, bisher absolut ohne Probeme !

Seid dem ich die aktuelle Xampp Version benutze funktioniert die Funktion nur noch teilweise...

Sobald ich in den einzelnen Tags über eine bestimmt Menge an Zeichen kommt, wird die Seite nicht geladen. Ich bekomme auch keine Fehlermeldung von PHP, sondern der Browser FF zeigt nur an, dass "die seite nicht geladen werden kann"

mit dem folgenden Script habe ich ein bisschen gestestet...

PHP-Code:
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 
Interessant ist es, dass die gesamte Stringlänge ($matches[6]) keine rolle spielt, sondern nur der eigentlich Test zwischen den BBcodes. Wenn ich die eigentlich Textlänge nicht überschreite funktioniert es einwandfrei... auch mit verschachtelten bbcodes !!

Hab ihr vielleicht eine Idee was das sein kann, oder noch besser wie man das problem beheben kann?

Liegt es vielleicht an PHP selber? Ich bin mir ziehmlich sicher, dass sich die PHP Version im aktuelle Xampp geändert hat im bezug auf meine vorherige Version.

Welche Version ich vorher hatte, kann ich leider nicht mehr sagen.

Auf meinem alten Xampp und auch auf verschiedenen Webspaces hatte ich nie Probleme !!!

Hoffentlich kann mir jemand helfen !

Vielen Dank schon mal..

Markus
Markus1979 ist offline   Mit Zitat antworten
Alt 27-11-2011, 17:36   #2 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Hallo, ich nochmal,

ich habe gerade einen Text mit knapp über 5,5 Millionen zeichen OHNE bbcodes durch die funktion laufe lassen... dieser wurde einwandfrei angezeigt.

Ich hab überhaupt keine Ahnung woran das liegen kann!!!!

Wieso klappen 5,5 Millionen Zeichen in einem String und sobald ein bbcode drin ist, der über ~610 Zeichen hat geht gar nichts mehr...

Vielel Grüße
Markus




EDIT: Auf meinem Webspace funktioniert das script einwandfrei auch mit vielen Zeichen... scheint dann wohl ein Xampp Problem zu sein...

Geändert von Markus1979 (27-11-2011 um 18:27 Uhr)
Markus1979 ist offline   Mit Zitat antworten
Alt 27-11-2011, 22:51   #3 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hast du denn mal ins PHP-Errorlog geschaut, ob da was Relevantes erscheint..?
([MAMP-Programmverzeichnis]/logs/php_error.log)

P.S.
Thema in den PHP-Bereich verschoben
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (27-11-2011 um 22:54 Uhr)
sonar ist gerade online   Mit Zitat antworten
Alt 27-11-2011, 23:09   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Wie viele Male wird deine While-Schlaufe durchlaufen?
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 28-11-2011, 08:12   #5 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Hallo Sonar, hallo Nightflyer,

Zitat:
Hast du denn mal ins PHP-Errorlog geschaut, ob da was Relevantes erscheint..?
([MAMP-Programmverzeichnis]/logs/php_error.log)
Nichts... es wird kein Fehler angezeigt, habe die datei vorher extra noch geleert und sie bleibt leer...

Zitat:
Wie viele Male wird deine While-Schlaufe durchlaufen?
Immer einmal mehr als BBcodeTags im String vorhanden sind...





Das gleiche Script läuft auf meinen Webspace einwandfrei...

Gibt es vielleicht in den PHP oder Apache Konfigurationen Einstellungen, die dieses Problem verursachen könnten?

Durch einen weiteren Test hab ich herausgefunden, dass es völlig egal ist wie viele Zeichen der gesamte String hat... 20 BBcodes sind überhaupt kein Thema, solange der Inhalt zwischen den Tags nicht über ~ 610 Zeichen kommt (+- 5 Zeichen).

Im FF bekomme ich die Fehlermeldung "Fehler: Verbindung unterbrochen. Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde"

Der IE zeigt die Seite war an, aber es wird nichts umgesetzt...


Viele Grüße
Markus
Markus1979 ist offline   Mit Zitat antworten
Alt 28-11-2011, 13:35   #6 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Mach mal
PHP-Code:
ini_set'pcre.backtrack_limit''100000' ); 
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 28-11-2011, 13:53   #7 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Hallo Nightflyer,

obwohl es sich eigentlich ganz gut angehört hat, hat es leider nichts bewirkt, sowohl in der PHP-Datei als auch direkt in der PHP-Ini !

Schade, hast du noch andere Ideen?

Vielen Dank und viele Grüße
Markus

Geändert von Markus1979 (28-11-2011 um 13:56 Uhr)
Markus1979 ist offline   Mit Zitat antworten
Alt 28-11-2011, 14:00   #8 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Nur den Tipp dass du mal eine andere Parser-Klasse verwenden solltest, weil grade bei grösseren Zeichenktten macht es durchaus Sinn auf preg_* zu verzichten und stattessen mit str_pos usw. zu arbeiten:

HTML_BBCodeParser
BBCode-Parserklasse fr PHP
quickerUBB UBB parsing engine
__________________
(\__/)
(='.'=)
(")_(")

Geändert von Nightflyer (28-11-2011 um 14:03 Uhr)
Nightflyer ist offline   Mit Zitat antworten
Alt 28-11-2011, 14:27   #9 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Hi Nightflyer,

mit dem Gedanken habe ich auch schon gespielt !!!!

Habe mir einige bbcode umwandler angeschaut, aber ich war nie wirklich zufrieden...

HTML_BBCodeParser von Christian Seiler ist wohl einer der Bekanntesten, aber ich persönlich finde ihn nicht besonders, weil er keine Verschaltungen von Tags versteht...

BBCode-Parserklasse für PHP... hmmm... Pear... noch nie was mit gemacht...


QuickerUBB UBB parsing engine... die hab ich bisher noch nicht gefunden...

Ich habe sie gerade mal kurz angetestet... die Zeichenmenge stört im nicht im geingsten und anscheinend kann man ich sie auch ganz einfach mit weiteren Tags erweitern...

Ich werde sie mir mal genauer anschauen und vielleicht ein bisschen aufräumen, beim überfliegen hab ich doch vieles gesehen was ich nicht brauche...

hast du zufällig irgendwo gelesen, ob der parser unter irgendeiner Lizenz steht?

Vielen Dank nochmal

Markus
Markus1979 ist offline   Mit Zitat antworten
Alt 28-11-2011, 14:43   #10 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Zitat:
Zitat von Markus1979 Beitrag anzeigen
hast du zufällig irgendwo gelesen, ob der parser unter irgendeiner Lizenz steht?
Nope, ist nur ein Teil einer ganzen Library die der Autor IMHO frei zur Verfügung stellt
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 28-11-2011, 14:47   #11 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
OK, Danke dir !!!!

Ich werde sie mal antesten... scheint aber ganz nett zu sein !
Markus1979 ist offline   Mit Zitat antworten
Alt 28-11-2011, 14:47   #12 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Übrigens hab ich selbst sowas auch mal gemacht falls du das erweitern möchtest:

Kleine BBcode-Klasse
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 29-11-2011, 11:00   #13 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 101
Hi Nightflyer,

den Thread kenn ich

ich hatte mich damals mit der anderen Seite beschäftigt, quasi im Backend :-)

Ich schau es mir mal an !

Vielen Dank nochmal für den BBcode-Parser... bin gerade ein wenig damit am spielen, scheint gut zu funktionieren !!! Bin (noch) begeistert...

Viele Grüße
Markus
Markus1979 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Serializer ohne Zeichenbegrenzung? Max Flash und Datenbanken 0 12-05-2007 20:56
Zeichenbegrenzung im Alert-Window pinkstar Komponenten und SmartClips 2 31-03-2005 09:51
zeichenbegrenzung in php berliner Flash und Datenbanken 2 05-11-2004 15:57
Zeichenbegrenzung für Mehrzeiliges Eingabefeld mOss HTML und CSS 4 06-03-2003 09:00
zeichenbegrenzung beim einlesen externer .txts in dynamisches textfeld??? willembock Flash 4 und Flash 5 2 04-03-2002 08:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele