Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nazwy plików z dziwnymi znakami
Forum PHP.pl > Forum > PHP
lzur
Mam taki skrypt:

foreach (new DirectoryIterator('.') as $file) {
if($file->isDot()) continue;
$filename = $file->getFilename();
echo system("stat $filename");.
}

Skrypt uruchamia komendę stat (to oczywiście tylko przykład) dla każdego pliku obecnego w katalogu.
Skrypt działa ale problemy pojawiają się jak na przykład w katalogu jest plik o nazwie `~!@#$%^&*()-=_+[]\{}|;':",.<>?.txt
Oczywiście chodzi o zacytowanie tych dziwnych znaków i właściwe przesłanie ich jako parametr.
Jak poprawić ten mój skrypt ?
System operacyjny linux.
nospor
Probowales tego

http://php.net/manual/en/function.escapeshellcmd.php
?
lzur
Jednak nie działa zawsze.
wstawiłem linijkę:
echo system("stat ".escapeshellcmd($filename));
i ona działa dla przykładu nazwy pliku, który podałem.
Jednak jak w nazwie pliku znajdzie się dodatkowo spacja to niestaty nie działa.
Przykładowo dla pliku o nazwie `~!@#$%^&*()-=_+[]\{}|;':",.< >?.txt
dostawiona spacja pomiędzy <> dostaję komunikat:

stat: cannot stat '`~!@#$%^&*()-=_+[]\{}|;'\'':",.<': No such file or directory
stat: cannot stat '>?.txt': No such file or directory

LowiczakPL
stworzyłem ten twój plik z dziwnymi znakami i odpaliłem skrypt i działa bez problemu
lzur
Cytat(LowiczakPL @ 20.04.2018, 21:57:16 ) *
stworzyłem ten twój plik z dziwnymi znakami i odpaliłem skrypt i działa bez problemu

Czy masz spację wewnątrz nazwy pliku ?


Udało się. Właściwa funkcja nazywa się escapeshellarg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.