Warum funktioniert dieser Script nicht?
Jochen Heinemann
- php
Hallo,
ich habe aus der Newsgroup fogendes Script genommen, was aber bei mir nicht wirklich läuft:
http://www.php-faq.de/q/q-code-verzeichnis.html
Kann mir mal jemand das Script erklären, vielleicht komme ich so darauf, warum es bei mir nicht funktioniert.
Viele Grüße
Jochen Heinemann
hallo,
ich habe aus der Newsgroup fogendes Script genommen, was aber bei mir nicht wirklich läuft:
http://www.php-faq.de/q/q-code-verzeichnis.html
"nicht wirklich läuft" ist eine sehr ungenaue Fehlerbeschreibung. Schau dir mal die Variablen in dem Script an und überlege dir, welche du davon noch mit einem Wert füllen müßtest.
Grüße aus Berlin
Christoph S.
icht wirklich läuft" ist eine sehr ungenaue Fehlerbeschreibung. Schau dir mal die Variablen in dem Script an und überlege dir, welche du davon noch mit einem Wert füllen müßtest.
Ja, geb Dir Recht, ist ne ungenaue Angabe. Deshalb habe ich es weiter oben nochmal genauer beschrieben.
Und, ich soll Variablen füllen? Ist wahr? Bitte um einen Tip.
grüße
Jochen Heinemann
Moin,
Kann mir mal jemand das Script erklären, vielleicht komme ich so darauf, warum es bei mir nicht funktioniert.
nimm mal alle '@' aus dem Script raus und schaue Dir die Fehlermeldungen an.
regds
Mike©
Moin,
Kann mir mal jemand das Script erklären, vielleicht komme ich so darauf, warum es bei mir nicht funktioniert.
nimm mal alle '@' aus dem Script raus und schaue Dir die Fehlermeldungen an.
Hallo mike,
hm, hab ich nun gemacht. Die Ausgabe ohne alle @ ist exact dieselbe, wie mit den @.
Was muß mir das nun sagen?
Grüße an Dich
Jochen Heinemann
regds
Mike©
Ahoi Jochen Heinemann,
hm, hab ich nun gemacht. Die Ausgabe ohne alle @ ist exact dieselbe, wie mit den @.
error reporting auch auf e_all?
MfG
Kann mir mal jemand das Script erklären, vielleicht komme ich so darauf, warum es bei mir nicht funktioniert.
Welche Teile des Scripts sind denn unverständlich? "Rekursiv" ist klar?
while ($file = @readdir ($handle) !== false)
Schleife durch alles in dem Verzeichnis. Es gibt drei Fälle:
1. if (preg_match("=^.{1,2}$=", $file))
Es gibt die Dateien "." (aktuelles Verzeichnis) und ".." (Nach oben), die werden hier übersprungen
2. if(is_dir($dir.$file))
Wenns ein Verzeichnis ist, rekursiv Dieses anzeigen!
3. else
Es ist eine Datei, anzeigen!
Kann mir mal jemand das Script erklären, vielleicht komme ich so darauf, warum es bei mir nicht funktioniert.
Welche Teile des Scripts sind denn unverständlich? "Rekursiv" ist klar?
Jaja, weiß ich, was heißt.
while ($file = @readdir ($handle) !== false)
Schleife durch alles in dem Verzeichnis. Es gibt drei Fälle:
Ok.
- if (preg_match("=^.{1,2}$=", $file))
Es gibt die Dateien "." (aktuelles Verzeichnis) und ".." (Nach oben), die werden hier übersprungen
Ok, hab ich auch so erkannt.
- if(is_dir($dir.$file))
Wenns ein Verzeichnis ist, rekursiv Dieses anzeigen!
auch soweit klar.
- else
Es ist eine Datei, anzeigen!
Und genau das funktioniert eben nicht...
Angezeigt wird |-1
|-1
|-1 usw.
"Findet die Funktion ein Verzeichnis, dann wird der Verzeichnisname fett ausgegeben und die Funktion ruft sich mit dem Unterverzeichnis als Parameter selbst wieder auf."
Eben das funktioniert auch nicht :-(
Nochmal Grüße und ersten Dank für Eure Hilfe
Jochen Heinemann
P.S: Achso, unter show_dir("special/"); habe ich show_dir("./"); eingetragen.
Hi,
- if (preg_match("=^.{1,2}$=", $file))
Es gibt die Dateien "." (aktuelles Verzeichnis) und ".." (Nach oben), die werden hier übersprungen
Wirklich?
Ich behaupte, daß damit alle Dateien, deren Namen aus einem oder zwei beliebigen Zeichen bestehen, übersprungen werden.
Begründung:
Innerhalb von "" wird \ auf PHP-Ebene als Escape benutzt.
. hat keine Spezialbedeutung (so wie \n, \t usw. es hätten), wird also durch . ersetzt.
Bei der Regex-Maschine kommt also
^.{1,2}$
an - sprich: ein oder zwei beliebige Zeichen.
Wenn nur Punkte gemeint sein sollen, müßte es m.E. "=^\.{1,2}$=" heißen,
damit bei der Regex-Maschine noch
^.{1,2}$
ankommt.
cu,
Andreas
Hallo Andreas,
- if (preg_match("=^.{1,2}$=", $file))
Es gibt die Dateien "." (aktuelles Verzeichnis) und ".." (Nach oben), die werden hier übersprungen
Wirklich?
ja. Der Code:
if(preg_match("=^\.{1,2}$=", 'aa')){
echo 'foo';
}
else{
echo 'bar';
}
gibt "bar" aus.
. hat keine Spezialbedeutung (so wie \n, \t usw. es hätten), wird also durch . ersetzt.
nein, deswegen bleibt es .
Grüße aus Nürnberg
Tobias
Hi,
- if (preg_match("=^.{1,2}$=", $file))
Es gibt die Dateien "." (aktuelles Verzeichnis) und ".." (Nach oben), die werden hier übersprungen
Wirklich?
ja.
. hat keine Spezialbedeutung (so wie \n, \t usw. es hätten), wird also durch . ersetzt.
nein, deswegen bleibt es .
Wah. PHP ist krank.
C und C++ und Javascript und Pascal und Perl und ... machen aus . einen .
Java verweigert das Kompilieren (illegal escape character).
Nur PHP macht daraus .
cu,
Andreas
Hallo,
ich habe aus der Newsgroup fogendes Script genommen, was aber bei mir nicht wirklich läuft:
http://www.php-faq.de/q/q-code-verzeichnis.html
Hi All,
schade. Ich hätte gerne diesen Script verstanden und eingesetzt. Leider habe ich nicht die Zeit, über Tage hinweg nach dem Grund zu suchen, warum das Teil bei mir nicht läuft.
Eure Hinweise habe ich ausprobiert, geändert oder gebracht hat es leider bei mir nichts und der (für mich) entscheidende Hinweis war leider einfach nicht dabei :-(
Also werde ich mir (wohl oder übel) ein anderen Script suchen oder zusammenbasteln müssen, daß mir weiterhilft.
Danke trotzdem an alle für die Mühe bei der Hilfe.
Jochen Heinamann
echo $begrüßung;
[...] warum es [...] nicht funktioniert.
Der Fehler ist eine nicht beachtete Operatoren-Rangfolge in dieser Zeile:
while ($file = readdir($handle) !== false) {
Klammert man die Zuweisung, geht es.
while (($file = readdir($handle)) !== false) {
echo "$verabschiedung $name";
WoW! Super $Name!
äVielen herzlichen Dank für Deine Hilfe!
Und ganz ehrlich, auch im Sinne von SELFHTML bringt es mir 1000 mal mehr, jetzt einfach zu wissen, was am Script, das ja nun 1000fach veröffentlicht ist, falsch war!
Jetzt wird endlich ein Schuh draus.
Nochmal vielen, vielen Dank...endlich komme ich weiter!
Jochen Heinemann
echo $begrüßung;
[...] warum es [...] nicht funktioniert.
Der Fehler ist eine nicht beachtete Operatoren-Rangfolge in dieser Zeile:
while ($file = readdir($handle) !== false) {
Klammert man die Zuweisung, geht es.
while (($file = readdir($handle)) !== false) {
echo "$verabschiedung $name";