Archivlink: javarea.de Forum > PHP, MySQL & CGI > Problem mit regulärem Ausdruck
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > Problem mit regulärem Ausdruck
Pages: [1]
| geschrieben von AlexD am 28.04.2008 - 07:38 |
Hallo zusammen,
ich hab ein Problem mit einem regulärem Ausdruck.
Kurze Beschreibung:
Ich nutze den JanaServer als Mailserver und Webserver. Ich hab mir nun eine kleine Startseite programmiert in der auch die vorhandenen E-Mails in den Postfächern angezeigt werden sollen. Das ganze ist personalisiert, heißt wenn sich der User auf der Startseite einloggt werden ihm die Postfächer angezeigt die er im Control-Center angegeben hat (müssen Jana-Konten sein).
Ich lasse jetzt mit einer Schleife den Ordner 'Mails' druchlaufen und hier jeden Unterordner 'UserX' auf die entsprechende E-Mailadresse prüfen um den korrekten Ordner zu lokalisieren.
Soweit funktioniert alles einwandfrei, nur das Problem ist beim Senden und Empfangen von E-Mails, hier werden im Ordner temporäre Datein in der Form 'Out_00001.inp' und 'In_00001.inp' erstellt (solange das Senden und Empfangen/an User Verteilen dauert) . Da dies keine Ordner sind, führen sie zu einer unschönen Fehlermeldung.
Ich hab das Problem schon im SelfPHP-Forum gepostet, leider bisher keine Lösung erhalten und hoffe hier einen Schritt weiter zu kommen.
Ich kann zwar die Fehlermeldungen beseitigen, jedoch werden dann die Mails nicht mehr korrekt gezählt da auch die 'UserX'-Ordner in der falschen If-Anweisung landen. 
Heißt im Klartext, ich möchte die temporären Dateien 'Out_0000X.inp' und 'In_0000X.inp' ignorieren. Die Datei Uidl.adb ist statisch vorhanden uns somit kein Problem.
Hier der LINK zum SelfPHP-Forum, dann brauch ich hier nicht nochmal alles kopieren. Wär aber kein Problem wenns gewünscht wird.
http://www.selfphp.de/forum/showthr....hp?t=19223
Besten Gruß
Alex |
| geschrieben von Klaush am 28.04.2008 - 10:24 |
Warum so kompliziert, du kannst doch mittels is_dir() prüfen ob es sich beim angegebenen Dateinamen um ein Verzeichnis oder um eine Datei handelt.
Bsp:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
<?
while ($dir = readdir($handle)){
if (is_dir($dir))
echo $dir." ist ein Verzeichnis!";
if (is_file($dir))
echo $dir." ist eine Datei!";
}
closedir($handle);
?>
|
vllt. ist eine rekursive Funktion eine ideale Ergänzung, falls du alle Unterordner und dessen Dateien brauchst. |
| geschrieben von okley am 28.04.2008 - 21:29 |
Ich würde auch mal meine is_dir bzw. is_file sollte dir weiterhelfen. Allenfalls fällt mir auf, dass du den integer Rückgabewert von preg_match mit dem string $dir vergleichst. Wenn also $dir = "User1" und preg_match-Rückgabewert = 0 bzw. wird dies niemals zu deinem gewünschten Ergebnis führen, oder?
Versuch doch mal mit preg_match("","") === 1 zu prüfen. |
| geschrieben von AlexD am 28.04.2008 - 23:02 |
Hm...
irgendwie komm ich da ned weiter.
die 'is_dir'-Funktion scheint mir sehr logisch, nur leider funktioniert sie ned so wirklich.
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
|
<?
// Bestimmen des User Mailordners
include('./inc/config_inc.php');
$handle = opendir($mail_pfad);
while ($dir = readdir($handle)){
if($dir != "." && $dir != ".."){ echo $dir;
if(is_dir($dir)){
$dir_handle = opendir($verz);
while($file = readdir($dir_handle)){
if($file == $adresse){
$user_dir = $dir;
}
}
closedir($dir_handle);
}
}
}
closedir($handle);
?>
|
Sollte doch eigentlich korrekt sein... oder?!
Nur wenn ich nach der If-Anweisung 'if(is_dir($dir)){ echo $dir; ....' $dir anzeigen lasse, wird nichts angezeigt.
Hänge ich nach der If-Anweisung ein } else { echo $dir;} , werden mir alle Ordner und Dateien angezeigt. 
Mein schlaues Buch sagt zu 'is_dir':
is_dir ermittelt, ob der Name ein Verzeichnis ist. An der Art des Namens selbst kann man nicht feststellen, ob es eine Datei oder ein Verzeichnis ist.
Also wär das schon das, was ich brauchen würde.
Problem gelöst!!!!!!!!
Folgendes war das Problem.
Es wurde immer nur der Name des Verzeichnisses überprüft, ich hab jetzt den kompletten Pfad angegeben und siehe da, es funktioniert.
also quasi so:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
<?
// Bestimmen des User Mailordners
include('./inc/config_inc.php');
$handle = opendir($mail_pfad);
while ($dir = readdir($handle)){
$verz = $mail_pfad."/".$dir; <= hier kompletten Pfad zusammenstellen
if($dir != "." && $dir != ".."){
if(is_dir($verz)){ <= hier dann mit is_dir prüfen
$dir_pfad = $mail_pfad.'/'.$dir;
$dir_handle = opendir($dir_pfad);
while($file = readdir($dir_handle)){
if($file == $adresse){
$user_dir = $dir;
}
}
closedir($dir_handle);
}
}
}
closedir($handle);
?>
|
|
|