Klaus: readdir Leerzeichenfehler

Hallo Leute,

Habe ein kleines Problem:
Per PHP wird ein Ordner geöffnet und der Inhalt angezeigt.
Im echo wird der Ordnername angezeigt und auch gleich verlinkt.

Die Anzeige funktioniert super. Jedoch wird der Link nur bis zum ersten Leerzeichen des Ordnernamens geschrieben.

Bsp.:  Anzeige:   14 07 Partyfotos
       Link:      7/14                 (7 Ist das $Monat)

Es sollte aber der Link sein: 7/14 07 Partyfotos/index.html

Mein Script:

<?php

$monat=date('n');
$verzeichnis=opendir($monat);
while ($file = readdir ($verzeichnis))
{

if ($file != "." && $file != "..")
{
if(preg_match("/php\d?$/i", $file)) continue;
echo "<a href=$monat/$file/index.html>$file</a><br>";
}

}
?>

Warum wird der Dateiname richtig angezeigt jedoch der Link nicht?

mfg Klaus

  1. Hi,

    Warum wird der Dateiname richtig angezeigt jedoch der Link nicht?

    weil er ungültig ist. Leer- und Sonderzeichen müssen url-kodiert werden.

    freundliche Grüße
    Ingo

    1. weil er ungültig ist. Leer- und Sonderzeichen müssen url-kodiert

      Kenn mich leider da nicht aus!

      und wie muss ich den Link url-kodieren?

      mfg Klaus

      1. hi,

        und wie muss ich den Link url-kodieren?

        rawurlencode() oder urlencode()

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          und wie muss ich den Link url-kodieren?

          rawurlencode() oder urlencode()

          gruß,
          wahsaga

          Danke

          Hab jetzt alles probiert! funkt nicht..

          könnt ihr mir nicht einfach die Lösung sagen?? ihr wisst sie sicher!

          mfg Klaus

          1. hi,

            Hab jetzt alles probiert! funkt nicht..

            Lerne bitte, dass so etwas keine Fehlerbeschreibung ist.

            könnt ihr mir nicht einfach die Lösung sagen?? ihr wisst sie sicher!

            Wundert mich zwar, dass das mit URL-gerecht kodiertem Pfadbestandteil "nicht funken" soll - aber korrektes HTML solltest du vielleicht erst mal benutzen, und dazu gehören in diesem Falle Anführungszeichen (oder Hochkommata) um den Attributwert.

            Und wenn es dann immer noch "nicht funkt" - dann komm bitte noch mal mit einer vernünftigen Problembeschreibung um die Ecke.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hallo.

            funkt nicht..

            Dann verwende statt URL besser UKW.
            MfG, at

      2. Hallo Klaus,

        weil er ungültig ist. Leer- und Sonderzeichen müssen url-kodiert
        Kenn mich leider da nicht aus!

        dann ändere dies bitte.

        und wie muss ich den Link url-kodieren?

        Das Handbuch verfügt über einen Abschnitt URL-Funktionen. Schau' bitte nach, ob PHP vielleicht schon etwas für Dich bereitstellt.

        Freundliche Grüße

        Vinzenz

        1. Warum wird dann der Text richtig angezeigt..jedoch nicht richtig verlinkt..echo schreibt ja nur text in da HTML file..ob "$file" als Text dagestellt wird oder als Link ist ja egal!
          oder?

          mfg Klaus

          1. Hi,

            Warum wird dann der Text richtig angezeigt..jedoch nicht richtig verlinkt..echo schreibt ja nur text in da HTML file..ob "$file" als Text dagestellt wird oder als Link ist ja egal!
            oder?

            nö. Wie gesagt gibt es für URLs - also auch Verlinkungen - Vorschriften. Wenn Du diese nicht einhälst, dann hast Du im Quelltext zwar denselben Code im href, aber er stellt keinen gültigen Link dar. Einige Browser werden allerdings versuchen, dennoch etwas Sinnvolles draus zu verlinken...

            freundliche Grüße
            Ingo

  2. echo $begrüßung;

    echo "<a href=$monat/$file/index.html>$file</a><br>";
    Warum wird der Dateiname richtig angezeigt jedoch der Link nicht?

    Der Wert eines Attributs endet am nächsten Leerzeichen. Nicht nur in deinem Fall empfiehlt es sich, Attributwerte immer in einfache oder doppelte Anführungszeichen zu setzen.

    echo "$verabschiedung $name";

  3. Hi Klaus!

    echo "<a href=$monat/$file/index.html>$file</a><br>";

    Was passiert bei folgendem Code?
    echo '<a href='.$monat.'/'.$file.'/index.html>'.$file.'</a>';

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. echo $begrüßung;

      echo "<a href=$monat/$file/index.html>$file</a><br>";
      Was passiert bei folgendem Code?
      echo '<a href='.$monat.'/'.$file.'/index.html>'.$file.'</a>';

      Das gleiche. Der (href-)Attributwert endet am ersten Leerzeichen, solange er nicht in einfachen oder doppelten Anführungszeichen notiert wird. Und diese fehlen in beiden Code-Teilen.

      Vielleicht hilft es, sich mal das Ergebnis anzusehen und sich nicht von PHP-Code verwirren zu lassen.

      <a href=monat/pfad zu einer datei/index.html>pfad zu einer datei/index.html</a>

      versus

      <a href="monat/pfad zu einer datei/index.html">pfad zu einer datei/index.html</a>

      Das Syntax-Highlighting zeigt den Fehler in der obigen Zeile sehr schön an.

      Das Umkodieren der Leerzeichen in der URI zum Zwecke der Übertragung in einem HTTP-Kontext sollte der Browser von selbst können. An dieser Stelle (wir befinden uns im HTML-Kontext) ist nur eine HTML-gerechte Formatierung nötig (& => &amp;).

      echo "$verabschiedung $name";

      1. Hi dedlfix!

        Danke, jetzt hab selbst ich gerafft, was da schief lief. :)
        Manchmal brauch man einfach jemanden, der einem den Kopf in die Kloschüssel steckt und die Spülung betätigt, damit die ganze Scheiße rausgespült wird.
        Ich bin im Prüfungsstress, ich darf Scheiße sagen.

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)