Gibt es bei PHP eine Längenbegrenzung für Stringkonstanten?
Keine Lust die Doku zu bemühen ? http://php.net/manual/en/language.types.string.php Denk aber an das Memory.limit in der PHP.ini ..
Laut Doku:
1 | It is no problem for a string to become very large. PHP imposes no boundary on the size of a string; the only limit is the available memory of the computer on which PHP is running. |
Note: string can be as large as up to 2GB (2147483647 bytes maximum) Aus der Doku unter http://php.net/manual/en/language.types.string.php
Ich habe ein syntax recognition pattern von Dokuwiki mit print_r rausgeholt, um ein Benchmark damit zu füttern. Das Teil ist über 4500 Zeichen lang und PHP meint, irgendwo einen Fehler darin zu finden. Die Fehlermeldung ist PHP-Mäßig: PHP Parse error: syntax error, unexpected ']' in bench-class.php on line 80 Die eröffnet bei 4500 Zeichen ungeahnte Möglichkeiten...
:
Bearbeitet durch User
Das macht Dokuwiki. Es ist ein einziges Pattern, mit dem die Wikiseiten nach Plugin-Befehlen durchsucht werden. Es wird aus Teilpatterns zusammengenagelt, die die Syntax-Plugins liefern. Ich will damit testen, was es kostet, diese Patterns Unicode-fähig zu machen.
:
Bearbeitet durch User
Joachim Drechsel schrieb: > Was willst Du denn mit einem String dieser Größe im Web anfangen ? Beispiel: https://de.wikipedia.org/wiki/Spezial:L%C3%A4ngste_Seiten Liste der DIN-Normen 807.303 Bytes, ziehen wir mal großzügig 100.000 für Multibyte ab, sind das immer noch ~700.000 Zeichen. Beim Speichern kommt das alles über $_POST['wpTextbox1'] in einem String rein.
Uhu Uhuhu schrieb: > Die eröffnet bei 4500 Zeichen ungeahnte Möglichkeiten... Man könnte ja mal versuchen die umgebenden Code und ggf. einen Auschnitt zu veröffentlichen DAS wäre doch mal eine Möglichkeit. Uhu Uhuhu schrieb: > Ich habe ein syntax recognition pattern von Dokuwiki mit print_r > rausgeholt Aha, wieso print_r? Was hast du dann damit gemacht? Fragen über Fragen... die aber alle nicht auf eine Längenbegrenzung von Strings zurückzuführen sind...
Läubi .. schrieb: > Man könnte ja mal versuchen die umgebenden Code und ggf. einen Auschnitt > zu veröffentlichen DAS wäre doch mal eine Möglichkeit. Ich glaub nicht, daß du mit einem Ausschnitt davon glücklich wirst und zur Lösung des Problems - es war ein ', das nicht escaped war - würde das sowieso nichts beitragen. > Aha, wieso print_r? Wieso nicht? Irgendwie mußte ich schließlich das aus einzelnen Fitzeln zusammengeschraubte Monster-Pattern aus lexer.php von Dokuwiki herausbekommen. > Was hast du dann damit gemacht? Ich hab die Wurst in meinen Benchmark-Code kopiert und bin jetzt dabei, ein einigermaßen realistisches Szenario zu basteln, um messen zu können, wie das Zeitverhalten von Singlebyte-Patterns im Vergleich zu Multibyte-Patterns ist. > Fragen über Fragen... die aber alle nicht auf eine Längenbegrenzung von > Strings zurückzuführen sind... Letzteres herauszubekommen, habe ich hier gefragt uns schnell eine Antwort bekommen - vielen Dank dafür an die, die so schnell geantwortet haben.
:
Bearbeitet durch User
T.roll schrieb: > Beim Speichern kommt das alles über $_POST['wpTextbox1'] in einem String > rein. Du kennst den feinen Unterschied zwischen einem String und einer Stringkonstanten? Daß eine Programmiersprache mit Riesenstrings klar kommt, heißt noch lange nicht, daß man den Riesenstring auch als String-Literal hinschreiben kann, ohne daß der Compiler - oder was auch immer da werkelt - den Löffel wirft.
Uhu Uhuhu schrieb: > Wieso nicht? Irgendwie mußte ich schließlich das aus einzelnen Fitzeln > zusammengeschraubte Monster-Pattern aus lexer.php von Dokuwiki > herausbekommen Ein einfaches echo hätte es auch getan, print_r fügt ggf. noch zusätzliche Zeichen ein. Ansonsten wäre schreiben+lesen in eine Datei besser, da sparst du dir das escapen.
Läubi .. schrieb: > Ein einfaches echo hätte es auch getan Auch, um die Wurst ins Debuglog zu bringen? Aber das Problem ist längst gelöst und die meine Frage war so gezielt, daß eine Themenausweitung rein gar nichts bringt.
:
Bearbeitet durch User
Uhu Uhuhu schrieb: > Du kennst den feinen Unterschied zwischen einem String und einer > Stringkonstanten? Nein erklär mir den Unterschied. (Vermutlich wegen $_POST?) Und trotzdem. Wo der Text her kommt? Aus der DB und wird bei der Abfrage in einer Variable gespeichert und verarbeitet. Uhu Uhuhu schrieb: > PHP Parse error: syntax error, unexpected ']' in bench-class.php on > line 80 Ich sage jetzt einfach mal, dass du einen Programmierfehler hast. PHP parst Variablen nur! bei eval. Sonst ist ihm der Inhalt scheiß egal. Also wie bei allen anderen Anfängern auch: Zeig mal deinen Code.
T.roll schrieb: > Uhu Uhuhu schrieb: >> Du kennst den feinen Unterschied zwischen einem String und einer >> Stringkonstanten? > > Nein erklär mir den Unterschied. (Vermutlich wegen $_POST?) Ein String zur Laufzeit wird ganz anders verarbeitet, als ein "String-Literal" (in " oder '): Der Compiler muß nicht unbedingt 2 GB String-Puffer bereithalten oder verwalten können, denn sowas ist in einem Quelltext doch eher exotisch. Das Laufzeitsystem der Sprache hat ganz andere Anforderungen zu erfüllen, als der Compiler. > Ich sage jetzt einfach mal, dass du einen Programmierfehler hast. PHP > parst Variablen nur! bei eval. Sonst ist ihm der Inhalt scheiß egal. Nein, das war ein ' im Patternstring, das natürlich nicht escaped war, weil print_r das nicht gemacht hat, als ich die Wurst dem Dokuwiki aus dem Bauch gezogen habe. Das Problem ist die Fehlermeldung, der man schon bei weniger unübersichtlichen Kontexten oft genug nicht genau entnehmen kann, wo genau das Problem gefunden wurde.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.