Suche auf lima-city
-
in: prüfen ob Datei in zwei Verzeichnisse doppelt ?
geschrieben von snapy
ahhhh ... danke
jetzt weiss ich auch, warum es mit glob() nicht funktioniert hat,
denn glob() hat im Array auch den Pfad (das Verzeichnis)
und dann sind die "Strings" ja auch immer unterschiedlich
habe mal eine Funktion draus gebastelt, ist bestimmt noch verbesserungsfähig
1234567891011121314151617181920212223242526// -----------------------------------------------------
function
dir_compare(
$dir1
,
$dir2
) {
$handle1
= opendir(
$dir1
);
$comp1
=
array
();
while
(
$datei
= readdir(
$handle1
)) {
if
(
$datei
!=
'.'
&&
$datei
!=
'..'
) {
$comp1
[]=
$datei
; }
}
closedir
(
$handle1
);
$handle2
= opendir(
$dir2
);
$comp2
=
array
();
while
(
$datei
= readdir(
$handle2
)) {
if
(
$datei
!=
'.'
&&
$datei
!=
'..'
) {
$comp2
[]=
$datei
; }
}
closedir
(
$handle2
);
$result
=
array_intersect
(
$comp1
,
$comp2
);
return
$result
;
}
// -----------------------------------------------------
Aufruf:$doppelt = dir_compare('pfad1', 'pfad2');
Ergebnis: Array mit doppelt vorkommenden Dateinamen
zum Prüfen, ob "doppelt" nehme ich einfach array_intersect()
dann spare ich mir den Vergleich mit den foreach Schleifen
und habe das Ergebnis gleich als Array vorliegen.
hier auch noch eine Version mit glob()
1234567891011121314151617181920212223242526// -----------------------------------------------------
function
dir_compare2(
$dir1
,
$dir2
) {
$dir1
= rtrim(
$dir1
,
'/'
);
$xvz1
=
glob
(
$dir1
.
'/*.*'
);
$comp1
=
array
();
foreach
(
$xvz1
as
$datei
) {
if
(
$datei
!=
'.'
&&
$datei
!=
'..'
) {
$comp1
[] =
str_replace
(
$dir1
.
'/'
,
''
,
$datei
); }
}
$dir2
= rtrim(
$dir2
,
'/'
);
$xvz2
=
glob
(
$dir2
.
'/*.*'
);
$comp2
=
array
();
foreach
(
$xvz2
as
$datei
) {
if
(
$datei
!=
'.'
&&
$datei
!=
'..'
) {
$comp2
[] =
str_replace
(
$dir2
.
'/'
,
''
,
$datei
); }
}
$result
=
array_intersect
(
$comp1
,
$comp2
);
return
$result
;
}
// -----------------------------------------------------
ist die Frage was Ressourcen-schonender ist, mit readdir() oder mit glob()
... oder ganz anders?
-
in: prüfen ob Datei in zwei Verzeichnisse doppelt ?
geschrieben von snapy
Hallo
wie kann ich überprüfen, ob in zwei Unter-Ordnern eine Datei doppelt vorhanden ist,
also ... ob der gleiche Dateiname in beiden Ordnern vorhanden ist
und dann eine Liste der "doppelten Dateien" ausgeben ?
Beispiel:
------------------------------------------------- /ordner1/aaaa.txt | /ordner2/yyyy.txt /ordner1/bbbb.txt | /ordner2/xxxx.txt /ordner1/cccc.txt | /ordner2/aaaa.txt /ordner1/zzzz.txt | /ordner3/zzzz.txt ------------------------------------------------- Ergebnis: (in beiden Verzeichnissen vorhanden) /aaaa.txt /zzzz.txt
wie kann ich sowas mit PHP machen ?