Autor | Zpráva | ||
---|---|---|---|
Paja222 Profil |
#1 · Zasláno: 8. 9. 2012, 16:25:52
Ahojte, potřeboval bych dostat proměnnou z adresy včetně diakritky, tzn;
pokud je v adrese &prom=%9A%E8%F8, tak mi echo vypíše ščř. Ovšem když je v adrese $prom=ščř, echo vypíše ščř nebo nějaké jiné znaky. Jde mi o to, dostat z adresy i tuto diakritiku, protože ani blbuvzorné formuláře bohužel nezajistí, aby uživatel nepřepsal text v adrese. :-) Vím, že na to existuje funkce, ale nemohu jí najít ani přes google, kdyby někdo z vás věděl, díky za pomoc :-) Díky, P |
||
Rellik Profil |
#2 · Zasláno: 8. 9. 2012, 16:45:56
Ahoj,
nehledáš náhodou toto: http://cz.php.net/manual/en/function.urldecode.php ? Nebo některou podobnou fci? |
||
Keeehi Profil |
#3 · Zasláno: 8. 9. 2012, 17:13:39
Diakritika v adrese nemá co dělat. Když se někdo hrabe v url, je to jeho problém.
|
||
Paja222 Profil |
#4 · Zasláno: 8. 9. 2012, 17:57:08
Rellik:
Bohužel, s urldecode dostanu jen ščr, z výše zmíněného ščř, což je to samé, jako klasicky vypsané echem, urlencode již vypíše %C5%A1%C4%8Dr, ale stále to není ono :-( Keeehi: diakritika v proměnné až zas tolika nevadí, navíc vím, že tuto funkci jsem kdysi viděl, ale nevzpomenu si bohužel kde |
||
Jan Tvrdík Profil |
#5 · Zasláno: 8. 9. 2012, 18:15:36
Paja222:
To, o co se snažíš, je nesmysl. Jak psal Keeehi, diakritika nemá v URL co dělat. Nicméně tam vypadá pěkně, proto moderní prohlížeče naoko diakritiku v URL podporují. Zadá-li uživatel do adresního řádku http://example.com?prom=ščř , tak moderní prohlížeč automaticky převede řetězec ščř do UTF-8 a server požádá ve skutečnosti o adresu http://example.com?prom=%C5%A1%C4%8D%C5%99 .
Na stránce pravděpodobně používáš kódování windows-1250, a proto správně zapsaný řetězec ščř vypadá jako %9A%E8%F8 . Nicméně pokud ti někdo ručně napíše do adresního řádku ěšč , tak na server dorazí %C5%A1%C4%8D%C5%99 , což je sice validní z pohledu utf-8, ale nesmysl ve windows-1250.
Aby fungovalo ščř zapsané do adresního řádku, tak bys musela převést ten parametr z utf-8 do windows-1250.
echo iconv('utf-8', 'windows-1250', $_GET['prom']); %9A%E8%F8 .
|
||
Alphard Profil |
#6 · Zasláno: 8. 9. 2012, 18:49:37
„Jak psal Keeehi, diakritika nemá v URL co dělat.“
Taky bych se k tomu klonil. Narazil jsem na mnoho rozbitých odkazů na wikipedii jenom proto, že se rozbila ta diakritika. Jde pracovat s diakritikou, wikipedia je důkazem, ale jsou s tím pořád ještě problémy. |
||
Jan Tvrdík Profil |
Alphard:
„Jde pracovat s diakritikou, wikipedia je důkazem“ To je opět (imho) především práce prohlížečů. Zadám-li do prohlížeče adresu http://cs.wikipedia.org/wiki/Křesťanství , tak prohlížeč požádá server o http://cs.wikipedia.org/wiki/K%C5%99es%C5%A5anstv%C3%AD . Ani wikipedia interně nepoužívá v odkazech diakritiku, protože tam nemá co dělat. Problém způsobuje třeba Opera, která zobrazuje v URL diakritiku a nechá ji tam, i když url zkopíruji (čímž zkopírují nevalidní URL). Lépe se chová Chrome – zobrazuje diakritiku, ale zkopíruji validní URL (bez diakritiky).
|
||
Časová prodleva: 6 dní
|
|||
Paja222 Profil |
#8 · Zasláno: 14. 9. 2012, 17:08:47
Ano, fungovat nebude, ale i to jde ošetřit :-)
$uzivatel = $_GET['nick']; $upraveny_nick = iconv('utf-8', 'windows-1250', $uzivatel); $diak = array('á','č','ď','é','ě','í','ľ','ň','ó','ř','š','ť','ú','ů','ý','ž','Á','Č','Ď','É','Ě','Í','Ľ','Ň','Ó','Ř','Š','Ť','Ú','Ů','Ý','Ž'); $chyba = 0; for($i=0;$i<count($diak);$i++){ if($p = strpos($upraveny_nick,$diak[$i]) === true){ $chyba = 1; break;}; } if($chyba == 1){$uzivatel = $upraveny_nick;} Janu Tvrdíkovi samozřejmě děkuji :-) |
||
Časová prodleva: 13 let
|
0