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 |
#2 · Zasláno: 1. 5. 2010, 21:18:03
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 |
#3 · Zasláno: 1. 5. 2010, 21:48:42
Ďakujem pekne :)
|
||
HomerJay Profil |
#4 · Zasláno: 2. 5. 2010, 17:05:59
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 |
#5 · Zasláno: 2. 5. 2010, 17:07:25
HomerJay:
Co je v proměnné $symbTable? |
||
HomerJay Profil |
#6 · Zasláno: 2. 5. 2010, 17:12:03
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 |
#8 · Zasláno: 3. 5. 2010, 13:35:35
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 |
#9 · Zasláno: 3. 5. 2010, 13:43:16
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 |
#10 · Zasláno: 3. 5. 2010, 14:01:17
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 |
#11 · Zasláno: 3. 5. 2010, 14:15:05
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 |
#12 · Zasláno: 3. 5. 2010, 16:11:12
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 |
#13 · Zasláno: 3. 5. 2010, 20:14:22
Jake898:
Ďakujem, funguje :) (tie návody zatiaľ nejako extra nepostrádam, ale vďaka za radu - nightfish) |
||
Časová prodleva: 14 let
|
0