Ankündigung

Einklappen
Keine Ankündigung bisher.

[gelöst] - Seltsames Verhalten bei der Ausgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • solaris
    hat ein Thema erstellt [gelöst] - Seltsames Verhalten bei der Ausgabe.

    [gelöst] - Seltsames Verhalten bei der Ausgabe

    Moin zusammen

    Ich hab letztens nen Script geschrieben, wo ich ein Bild anzeigen lassen wollte. Das wurde mir aber nicht angezeigt, obwohl ich den Code mehrfach überprüft habe.

    Bei der Ausgabe des Seitenquelltextes im Browser stellte ich fest, dass bei dem Dateinamen der Bilddatei der erste Buchstabe ein Sonderzeichen ist.
    Erst hatte ich gedacht, dass dies ein Bug im Browser ist. Habs dann im Edge, Firefox, Chrome und Opera geprüft, immer eine fehlerhafte Ausgabe.

    Unter folgenden Bedingungen habe ich es getestet;
    Windows 11 - Xampp - PHP 8.1.6
    Debian 11 - Apache 2.4 - PHP 8.1.8
    CentOS - Apache2.4 - PHP 7.4.30

    Hier der Code:
    PHP-Code:
    <?PHP
    echo "graphics\aurz.png<BR>";
    echo 
    "graphics\burz.png<BR>";
    echo 
    "graphics\curz.png<BR>";
    echo 
    "graphics\durz.png<BR>";
    echo 
    "graphics\eurz.png<BR>";
    echo 
    "graphics\furz.png<BR>";
    echo 
    "graphics\gurz.png<BR>";
    echo 
    "graphics\hurz.png<BR>";
    echo 
    "graphics\iurz.png<BR>";
    echo 
    "graphics\jurz.png<BR>";
    echo 
    "graphics\kurz.png<BR>";
    echo 
    "graphics\lurz.png<BR>";
    echo 
    "graphics\murz.png<BR>";
    echo 
    "graphics\nurz.png<BR>";
    echo 
    "graphics\ourz.png<BR>";
    echo 
    "graphics\purz.png<BR>";
    echo 
    "graphics\qurz.png<BR>";
    echo 
    "graphics\rurz.png<BR>";
    echo 
    "graphics\surz.png<BR>";
    echo 
    "graphics\turz.png<BR>";
    echo 
    "graphics\uurz.png<BR>";
    echo 
    "graphics\vurz.png<BR>";
    echo 
    "graphics\wurz.png<BR>";
    echo 
    "graphics\xurz.png<BR>";
    echo 
    "graphics\yurz.png<BR>";
    echo 
    "graphics\zurz.png<BR>";
    ?>
    Bei mir sieht das Ergebnis beim Firefox dann so aus:
    PHP-Code:
    graphics\aurz.png
    graphics
    \burz.png
    graphics
    \curz.png
    graphics
    \durz.png
    graphicsurz
    .png
    graphicsurz
    .png
    graphics
    \gurz.png
    graphics
    \hurz.png
    graphics
    \iurz.png
    graphics
    \jurz.png
    graphics
    \kurz.png
    graphics
    \lurz.png
    graphics
    \murz.png
    graphics urz
    .png
    graphics
    \ourz.png
    graphics
    \purz.png
    graphics
    \qurz.png
    graphics urz
    .png
    graphics
    \surz.png
    graphics urz
    .png
    graphics
    \uurz.png
    graphicsurz
    .png
    graphics
    \wurz.png
    graphics
    \xurz.png
    graphics
    \yurz.png
    graphics
    \zurz..png 
    Bei den anderen Browsern sehe ich dann Sonderzeichen.

    Kann mir das jemand erklären oder ist das ein Bug in PHP?

    LG Frank

  • solaris
    antwortet
    Zitat von tk1234 Beitrag anzeigen
    Nein, ist es nicht. Das Problem ist, dass einige Zeichen in Kombination mit einem Backslash davor eine Sonderbedeutung haben wenn der String in doppelten Anführungszeichen steht. Die Lösung ist ganz einfach: verwende keinen Backslash als Pfadtrenner sondern einen normalen Slash (»/«), der funktioniert dann auch unter jedem System, nicht nur unter dem komischen Ding von M$.
    Argh, das war das Problem.
    Ich hatte in den letzten Tagen was unter Windows programmiert und daher die Backslashes. Blind im Eifer habe ich dann unter PHP natürlich (oder auch nicht natürlich) die Backslashes verwendet.
    Hab's getz geändert, und siehe da: Problem behoben

    Vielen vielen Dank für die Infos. Letzendlich hat mich Dein Hinweis auf Microschrott auf den richtigen Pfad zurückgeschoben.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von solaris Beitrag anzeigen
    Kann mir das jemand erklären oder ist das ein Bug in PHP?
    Nein, ist es nicht. Das Problem ist, dass einige Zeichen in Kombination mit einem Backslash davor eine Sonderbedeutung haben wenn der String in doppelten Anführungszeichen steht. Die Lösung ist ganz einfach: verwende keinen Backslash als Pfadtrenner sondern einen normalen Slash (»/«), der funktioniert dann auch unter jedem System, nicht nur unter dem komischen Ding von M$.

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Ein Backslash in einem String hat eine besondere Bedeutung. Siehe:

    https://www.php.net/manual/de/langua....syntax.double

    Möchtest du das Zeichen Backslash in einem String einsetzen, solltest du es mit einem weiteren Backslash escapen.

    Einen Kommentar schreiben:

Lädt...
X