Autor Zpráva
Jcas
Profil *
O problémech při špatné volbě jména souboru jsem slyšel už mockrát. Kdybych ty soubory dělal já, tak se takto v nikdy jmenovat nebudou.
Ale co mě zaráží, že to jednou zvládne jednou ne. Vše šlo z jednoho PC, z jednoho softwaru a zpracování je také naprosto stejné. Dělá to jeden a ten samý scandir(). Jediné, kde byl rozdíl (a ten to asi nějak pokazil), že soubory byly na server nahrány na dvakrát a mezitím jsem asi udělal aktualizaci File manageru, kterým to přes FTP nahrávám.
Asi mi nezbývá nic jiného, než se vrhnout do dlouhého a dlouhého přejmenovávání.

http://www.zocschmoravskebranice.eu/index.php?page=RzP
Schválně koukněte např. na rok 1938 a 1944.
Alphard
Profil
Třeba názvy souborů z 1944 se správně zobrazí při kódování cp1250. Zkuste funkci autoUTF() z místoho FAQ.
Jcas
Profil *
Sice té funkci moc nerozumím, ale to nevadí. Přetáhnout v příkazu echo přes autoUTF(), nebo i přes tu fc base64_encode(autoUTF())?


Tak samotné autoUTF() vyřeší zobrazení. Už ale nevyřeší odkaz, i když se v řádku dole ukazuje dobře.
Alphard
Profil
Použít na přejmenování souborů, zkusil bych rekurzivně vytvořit kopii všech souborů s názvy prohnanými touto funkcí. Nebo ideálně rovnou PHP triky - Vytvoření přátelského URL jestli nevadí zbavit se diakritiky.
Jcas
Profil *
Tím se to asi nevyřeší? Prostě asi budu muset vše přejmenovat.
Jestliže scandir() vytáhne nějaký název souboru, a tento následně není schopen na onen soubor odkázat, tak ten správný formát odkazu asi nezískám?

Víš co jsem zkusil a taky nefunguje. V Filemanageru jsem si dal přejmenovat (abych kopíroval přesně to co ukazuje) ctrl+c a dal jsem to přímo do adresního řádku prohlížeče. A taky nic.
Alphard
Profil
Jcas:
Prostě asi budu muset vše přejmenovat.
To navrhuji od začátku, jen bych to zkusil automatizovaně, viz výše.

Jestliže scandir() vytáhne nějaký název souboru, a tento následně není schopen na onen soubor odkázat, tak ten správný formát odkazu asi nezískám?
Tady je v cestě ještě prohlížeč a http server, který si to může interpretovat po svém. Pokud ani vytažený název souboru nejde použít pro rename() a ohlásí to neexistenci souboru, bude zřejmě (bez nějaký složitých transformací kódování) potřeba jít výše – na úroveň operačního systému. I to se stává.

Měl jsem na mysli zkusit něco jako tohle. Zkusit to je otázka 5 minut, jen už to tady řešíte 3 hodiny :-)
foreach (scandir() as $file)
{
  // ošetření .. apod.
  rename($file, friendly_url($file)); // muselo by se ošetřit zachování teček před extenzí
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: