Autor Zpráva
HomerJay
Profil
Zdravím.
Napíšem to stručne - toto je niečo ako systém na zdieľanie súborov.
Uploadujem súbor s názvom povedzme "Môj Krásny Súbor.jpg" - obsahuje medzery, obsahuje diakritiku. Potrebujem medzery vyplniť napr. znakom _ a diakritiku zmeniť na obyčajné písmená (š->s), akú funkciu na to použiť? Vďaka.
BuGeR
Profil
Použij toto na odstranění diakritiky http://cs.wikibooks.org/wiki/PHP_prakticky/Odstran%C4%9Bn%C3%AD_diakritiky a str_replace(" ", "_", $soubor) na přepsání mezer na _
HomerJay
Profil
Ďakujem pekne :)
HomerJay
Profil
Pardón, spýtam sa ešte na využitie...
Súbor sa nahrá, názov do premennej:

$filename = $_FILES['userfile']['name'];

Ale keď použijem:

str_replace(" ", "_", $filename); strtr($filename, $symbTable);

nejako to nefunguje...
mckay
Profil
HomerJay:
Co je v proměnné $symbTable?
HomerJay
Profil
Pardón.
$symbTable je daná tabuľka z Wikipedie, ktorú uviedol BuGeR vyššie.
HomerJay
Profil
Moderátor Chamurappi: Přesunuto z Vyplnenie medzier v URL a zmena znaku - NOVÉ.

Pardón že zakladám nový topic, prvý mi však nejako extra nepomohol, aj keď som vážne vďačný za snahu.

Potreboval som pri uploade súborov odstrániť diakritiku a zmeniť medzery na _, no a nakoľko toho v PHP až tak veľa neviem (čo si budeme nahovárať :D), aj keď som dostal pomoc, nevedel som ju využiť.

SEM to potrebujem (konkrétne v upload.php, ktorý sa spustí po uploade súboru).

Toto je časť upload.php (len tá časť, ktorú treba) (pripisujem vysvetlivky v //, inak tam nie sú):
$filename = $_FILES['userfile']['name']; // Takto definujem názov súboru
$symbTable = Array('ä'=>'a','Ä'=>'A','á'=>'a','Á'=>'A','a'=>'a','A'=>'A','a'=>'a','A'=>'A','â'=>'a','Â'=>'A','č'=>'c','Č'=>'C','ć'=>'c','Ć'=>'C','ď'=>'d','Ď'=>'D','ě'=>'e','Ě'=>'E','é'=>'e','É'=>'E','ë'=>'e','Ë'=>'E','e'=>'e','E'=>'E','e'=>'e','E'=>'E','í'=>'i','Í'=>'I','i'=>'i','I'=>'I','i'=>'i','I'=>'I','î'=>'i','Î'=>'I','ľ'=>'l','Ľ'=>'L','ĺ'=>'l','Ĺ'=>'L','ń'=>'n','Ń'=>'N','ň'=>'n','Ň'=>'N','n'=>'n','N'=>'N','ó'=>'o','Ó'=>'O','ö'=>'o','Ö'=>'O','ô'=>'o','Ô'=>'O','o'=>'o','O'=>'O','o'=>'o','O'=>'O','ő'=>'o','Ő'=>'O','ř'=>'r','Ř'=>'R','ŕ'=>'r','Ŕ'=>'R','š'=>'s','Š'=>'S','ś'=>'s','Ś'=>'S','ť'=>'t','Ť'=>'T','ú'=>'u','Ú'=>'U','ů'=>'u','Ů'=>'U','ü'=>'u','Ü'=>'U','u'=>'u','U'=>'U','u'=>'u','U'=>'U','u'=>'u','U'=>'U','ý'=>'y','Ý'=>'Y','ž'=>'z','Ž'=>'Z','ź'=>'z','Ź'=>'Z'); // Tabuľka prevodu znakov z Wikipedie


Ale ako teraz zmeniť názov súboru? Použiť rename? Ako presne?
Skúsil som toto:
str_replace(" ", "_", $filename); strtr($filename, $symbTable);

Avšak potom mi došlo, že je to blbosť, nakoľko $filename definuje asi celý súbor a samotný názov je to $_FILES['userfile']['name'].

Schválne skúste nahrať na server súbor s názvom Som Strašne Pekný Krásny.jpg (teda diakritika + medzery), súbor sa proste nahrá ako "Som" bez prípony a koniec.

Vďaka.
nightfish
Profil
Je zajímavé, že sem ještě nikdo neposlal odkazy na dva (kvalitní) české články o této problematice:
http://php.vrana.cz/vytvoreni-pratelskeho-url.php
http://latrine.dgx.cz/odstraneni-diakritiky-z-ruznych-kodovani
HomerJay
Profil
nightfish:
Obávam sa že zmena diakritiky a medzery je už vysvetlená, ja teraz potrebujem využitie v praxy a konkrétne tu (teda dva príspevky vyššie).
nightfish
Profil
HomerJay:
aha, to jsem přehlédl
tak tedy k [#7]:
Je pěkné, že voláš funkce str_replace a strtr, ale jaksi si zapomínáš ukládat jejich výstup. (Tedy změny se sice provedou, ale neuloží.)
Navíc jsi tu nenapsal kus kódu, který je zodpovědný za přejmenování a uložení souboru.
HomerJay
Profil
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadPath.$filename)) 
{ /* Blbosti ako count súborov, etc. */ }


Je mi jasné že sa súbor uloží podľa $uploadPath.$filename, teda ak $uploadPath je "zlozka/zachod/" a $filename nazov suboru, uloží sa tam a názvom súboru. Avšak stále nefungujú tie zmeny - ako si povedal.
Jake898
Profil
Ano, ale jak říkal nightfish - neukládáš do proměnné výsledky těch funkcí.

$filename = str_replace(" ", "_", $filename);
$filename = strtr($filename, $symbTable);


A zkus použít jeden z návodů z [#8].
HomerJay
Profil
Jake898:
Ďakujem, funguje :)
(tie návody zatiaľ nejako extra nepostrádam, ale vďaka za radu - nightfish)

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: