Finder::findDirectories() nenajde složky s diakritikou

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jantobola
Člen | 5
+
0
-

Potřebuji prohledat nějakou složku, která obsahuje další složky a názvy poukládat do pole. Pokud použiju:

<?php
foreach (Finder::findDirectories('*')->from("path/to/dir") as $dir) {
	// save name of folder $dir->getFilename()
}
?>

tak mi to najde pouze složky, které v názvu nemají háčky.
Např. složku „Modré auto“ najde, složku „Červené auto“ nenajde

Dá se to nějak jednoduše vyřešit?

enumag
Člen | 2118
+
0
-

Zajímavé. Můžeš zkusit co udělá nativní RecursiveDirectoryIterator?

s4muel
Člen | 92
+
0
-

na linux a nette 2.0.10 to ide OK

jantobola
Člen | 5
+
0
-

enumag napsal(a):

Zajímavé. Můžeš zkusit co udělá nativní RecursiveDirectoryIterator?

zkusil jsem:

<?php
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($objects as $name){
    dump($name);
}
?>

a výsledek byl takovýto:

SplFileInfo #2aab
path => "../www/resources/gallery\\Modr\xe9 auto" (35)
SplFileInfo #1f60
path => "../www/resources/gallery\\Cerven\xe9 auto" (37)

takže takhle to tu složku našlo, ale nějak to odstranilo háček :)

jantobola
Člen | 5
+
0
-

s4muel napsal(a):

na linux a nette 2.0.10 to ide OK

Já jedu momentálně na win a verze nette 2.1-dev

Mysteria
Člen | 797
+
0
-

Windows 8, PHP 5.5.3, poslední Nette 2.1-dev:

Nette\Utils\Finder::findDirectories(‚*‘): Složka Červené auto nenalezena

Nette\Utils\Finder::find(‚*‘): Složka Červené auto nalezena jako: \\xc8erven\xe9 auto

enumag
Člen | 2118
+
0
-

Obávám se že tohle je v současné době neřešitelné.

jantobola
Člen | 5
+
0
-

enumag napsal(a):

Obávám se že tohle je v současné době neřešitelné.

No, tak to je smůla. Pokud to tedy jede na linuxu v pohodě, tak mi to stačí.
Dík.

Filip Procházka
Moderator | 4668
+
0
-

Mám pro tebe jednoduché řešení: nepoužívej diakritiku ve složkách, stejně je to prasárna ;)

kbtm
Člen | 22
+
0
-

Přeji dobrý den,

mám podobný problém … (Windows XP/WampServer 2.2/Apache 2.2.21/PHP 5.3.10/MySQL 5.5.20/Nette 2.0.12)

Uploaduji IMG do dočasného adresáře a pak je kopíruji spolu s náhledy do jiného. Pro dohledání IMG používám funkci :

foreach Finder::findFiles($pre.'*.jpg',$pre.'*.jpeg',$pre.'*.png')->from($this->imagesDirUploads.'temp/') as $file)
{....}

Najednou zjišťuji, že funkce vrací název souboru bez diakritiky (soubor „Bez názvu.png“ → „Bez nzvu.png“.
Ale … testuji vše pod FireFoxem – tam funkce nyní pracuje chybně. Pod Chromem vše OK !

Nemám čas/chuť dohledávat důvod, diakritiku odstraním už v uploadovacím java-skriptu. Před cca týdnem bylo ale vše určitě v pořádku – zřejmě nějaká aktualizace FireFoxu trochu zaskřípala (momentálně verze 24.0 …). Pokud vezmu starší verzi kodu, pod FireFoxem už také nepracuje.
Takové chování/změnu chování na straně prohlížeče bych v tomto případě tedy nečekal.

S pozdravem kbtm