String ist 4 zeichen lang, php behauptet, er 46 Zeichen lang

0 views
Skip to first unread message

Jan Novak

unread,
Jun 11, 2021, 9:03:43 AMJun 11
to
Moin,

ich stehe vor einem Rätsel. Eine ganz einfache PHP Datei:


$screen_width = "<script>document.write(screen.width);</script>";
var_dump($screen_width);
echo "<br>";
var_dump(strlen($screen_width));

Mir zeigt die Ausgabe:

string(46) "1920"
int(46)


Wieso ist der String "1920" 46 Zeichen lang (wo sind die nicht
sichtbaren 42 Zeichen)?
Ich habe keine Möglichkeit gefunden mit z.B. (int), intval usw., den
String "1920" in eine Zahl zu wandeln. Kommt immer 0 raus.


Jan

Carlos Naplos

unread,
Jun 11, 2021, 9:12:42 AMJun 11
to
"<script>document.write(screen.width);</script>"

Zähle mal die Zeichen!

Gruß
CN

Jan Novak

unread,
Jun 11, 2021, 9:16:25 AMJun 11
to
Am 11.06.21 um 15:12 schrieb Carlos Naplos:
> "<script>document.write(screen.width);</script>"
>
> Zähle mal die Zeichen!

OK, aber wieso steht dann "1920" im String?

Jan

Enrik Berkhan

unread,
Jun 11, 2021, 10:33:05 AMJun 11
to
Jan Novak <rep...@gmail.com> wrote:
> $screen_width = "<script>document.write(screen.width);</script>";

Dieser String ist doch ganz offensichtlich 46 Zeichen lang.

> var_dump($screen_width);
> echo "<br>";
> var_dump(strlen($screen_width));
>
> Mir zeigt die Ausgabe:
>
> string(46) "1920"
> int(46)
>
>
> Wieso ist der String "1920" 46 Zeichen lang (wo sind die nicht
> sichtbaren 42 Zeichen)?

Das php schrub hier

string(46) "<script>document.write(screen.width);</script>";

und der JScript-Interpreter im Browser machte daraus

string(46) "1920"

> Ich habe keine Möglichkeit gefunden mit z.B. (int), intval usw., den
> String "1920" in eine Zahl zu wandeln. Kommt immer 0 raus.

Wie soll das php-Skript denn die interpretierte Darstellung des Browsers
lesen können?

Gruß,
Enrik

Arno Welzel

unread,
Jun 11, 2021, 11:09:04 AMJun 11
to
Jan Novak:

> Moin,
>
> ich stehe vor einem Rätsel. Eine ganz einfache PHP Datei:
>
>
> $screen_width = "<script>document.write(screen.width);</script>";
> var_dump($screen_width);
> echo "<br>";
> var_dump(strlen($screen_width));
>
> Mir zeigt die Ausgabe:
>
> string(46) "1920"
> int(46)
>
>
> Wieso ist der String "1920" 46 Zeichen lang (wo sind die nicht
> sichtbaren 42 Zeichen)?

Also für mich sind DAS hier durchaus 46 Zeichen:

<script>document.write(screen.width);</script>



--
Arno Welzel
https://arnowelzel.de

Arno Welzel

unread,
Jun 11, 2021, 11:10:40 AMJun 11
to
Jan Novak:
Keine Ahnung. Hier ist das nicht so:

<https://sandbox.onlinephpfunctions.com>

<?php
$screen_width = "<script>document.write(screen.width);</script>";
var_dump($screen_width);
echo "<br>";
var_dump(strlen($screen_width));

Ergebnis:

string(46) "<script>document.write(screen.width);</script>"
<br>int(46)

Jan Novak

unread,
Jun 11, 2021, 1:01:40 PMJun 11
to
Am 11.06.21 um 16:25 schrieb Enrik Berkhan:
ach sooooo verstehe...
Dann stellt sich die Frage, warum z.B. bei Arno was anderes heraus kommt
als bei mir!?

Jan

Enrik Berkhan

unread,
Jun 11, 2021, 3:53:05 PMJun 11
to
Jan Novak <rep...@gmail.com> wrote:
> ach sooooo verstehe...
> Dann stellt sich die Frage, warum z.B. bei Arno was anderes heraus kommt
> als bei mir!?

Evtl. hat er es mit php auf der Kommandozeile ausgeführt. Geht ja auch.

Gruß,
Enrik

Stefan Froehlich

unread,
Jun 11, 2021, 4:57:03 PMJun 11
to
On Fri, 11 Jun 2021 19:01:39 Jan Novak wrote:
> Am 11.06.21 um 16:25 schrieb Enrik Berkhan:
> > Jan Novak <rep...@gmail.com> wrote:
> >> $screen_width = "<script>document.write(screen.width);</script>";

> > Dieser String ist doch ganz offensichtlich 46 Zeichen lang.

> >> var_dump($screen_width);
> >> echo "<br>";
> >> var_dump(strlen($screen_width));
> >>
> >> Mir zeigt die Ausgabe:
> >>
> >> string(46) "1920"
> >> int(46)

> >> Wieso ist der String "1920" 46 Zeichen lang (wo sind die nicht
> >> sichtbaren 42 Zeichen)?

Guck Dir doch einmal den Quelltext an :-)

Educated guess: Dein Bildschirm hat eine Breite von 1920 Pixel.

> > Wie soll das php-Skript denn die interpretierte Darstellung des Browsers
> > lesen können?

> ach sooooo verstehe...
> Dann stellt sich die Frage, warum z.B. bei Arno was anderes heraus
> kommt als bei mir!?

Die PHP Sandbox schreibt ihre Ausgabe mit JavaScript, das wird vom
Browser nicht noch einmal interpretiert.

(IIRC solltest Du mit xdebug dieses Verhalten abstellen können, weil
dort das Ergebnis von var_dump auf Wunsch auch escaped und
aufbereitet werden kann)

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - Endlich: Träumen weil es räumt!
(Sloganizer)
Reply all
Reply to author
Forward
0 new messages