Iconv problem s makcenmi a dlznami – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Iconv problem s makcenmi a dlznami – PHP – Fórum – Programujte.comIconv problem s makcenmi a dlznami – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
dalaman0
Věrný člen
17. 11. 2009   #1
-
0
-

caute,

pouzivam jeden skript, ktory mi vytvori pekne url - cize nahradi vsetky nezmyselne znaky za -, a text zmeni na text bez diakritiky

funkcia mi funguje na localhoste (windows) ale na serveri(debian) nie.
Presnejsie nefunguje tato cast kodu:

 $text = iconv("utf-8", "us-ascii//TRANSLIT", $text) ;

$text = strtr($text, "ěščřžýáíéóůúľĺňôťäďÉŤÝÚÍÓÁŠĎĽŽČŇ",
"escrzyaieouullnotadetyuioasdlzcn") ;


iconv mi pri vstupe ľščťžýáíé da na vystup ????????? :(
pritom mi normalne vracia lsctzyaie

Neviete kde moze byt chyba ?
dakujem

Nahlásit jako SPAM
IP: 78.98.126.–
Lepšie je mať psa na saláme ako salámu pod psom !!!
Reklama
Reklama
z_moravec
~ Redaktor
+3
Posthunter
17. 11. 2009   #2
-
0
-

Nejdřív nahraď znaky, které to nové kódování nezná, a pak teprve použij iconv.

Nahlásit jako SPAM
IP: 83.240.110.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
dalaman0
Věrný člen
17. 11. 2009   #3
-
0
-

praveze to iconv musi najskor zmenit kodovanie aby to strtr zozral ;)

ked dam rovno ten string do strtr tak to z ľščťžýáíé vrati sallsyl�lacuclco

doma mi to funguje ale na niektorych serveroch nie, nechapem

Nahlásit jako SPAM
IP: 78.98.199.–
Lepšie je mať psa na saláme ako salámu pod psom !!!
KIIV+42
God of flame
17. 11. 2009   #4
-
0
-

To dalaman : strtr to musi sezrat bez problemu..
samo ne pokud pouzivas strtr($neco,'áčě','ace') ..
chce to strtr($neco, array( 'á'=>'a', 'č'=>'c', ..... ))
precijen .. utf-8 je na vic znaku a prvni verze strtr bere jen jeden .. takovy á veme jako dva znaky.. a nahrazuje kazdy zvlast


a to ze to funguje na nekterych serverech.. zalezi na locale a verzi iconv ...

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
z_moravec
~ Redaktor
+3
Posthunter
17. 11. 2009   #5
-
0
-

To je tím, že používáš UTF-8, ale nepoužíváš funkce pro toto kódování. Místo strstr použij mb_strttr

Nahlásit jako SPAM
IP: 83.240.110.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
dalaman0
Věrný člen
17. 11. 2009   #6
-
0
-

Diky pani ;)

strtr($neco, array( 'á'=>'a', 'č'=>'c', ..... )) funguje,
funckiu mb_strttr mi nepoznalo tak som to ani nemohol vyskusat

Nahlásit jako SPAM
IP: 78.98.199.–
Lepšie je mať psa na saláme ako salámu pod psom !!!
z_moravec
~ Redaktor
+3
Posthunter
17. 11. 2009   #7
-
0
-

To dalaman : Ono to chce použít hlavu a neopisovat mechanicky. Mám tam překlep: mb_strtr. V php jsou pro práci s řetězci dva typy funkcí, pro UTF8 se používají ty s prefixem mb_

Nahlásit jako SPAM
IP: 83.240.110.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
hrach
~ Redaktor
+1
Boss
17. 11. 2009   #8
-
+1
-
Zajímavé

no, kluci, moc jste to efektivně nevyřešili. a hlavně, proč ten problém... že :D
já sem kdysi se tím zabýval, takže, odpověď, proč to nefunguje je tak, že na severu iconv používa starou knihovnu.
Ta nová - libiconv to už dělá v pořádku. Toto se dá zjistit z phpinfo.

Zde je metoda třídy, která odstraní diakritiku:

       /**

* Strips diacritics
* @param string $string
* @return string
*/
public static function toAscii($string)
{
if (defined('ICONV_IMPL') && ICONV_IMPL != 'libiconv') {

/**
* @author David GRUDL
* @link http://davidgrudl.cz
*/
static $table = array(
"\xc3\xa1"=>"a","\xc3\xa4"=>"a","\xc4\x8d"=>"c","\xc4\x8f"=>"d","\xc3\xa9"=>"e",
"\xc4\x9b"=>"e","\xc3\xad"=>"i","\xc4\xbe"=>"l","\xc4\xba"=>"l","\xc5\x88"=>"n",
"\xc3\xb3"=>"o","\xc3\xb6"=>"o","\xc5\x91"=>"o","\xc3\xb4"=>"o","\xc5\x99"=>"r",
"\xc5\x95"=>"r","\xc5\xa1"=>"s","\xc5\xa5"=>"t","\xc3\xba"=>"u","\xc5\xaf"=>"u",
"\xc3\xbc"=>"u","\xc5\xb1"=>"u","\xc3\xbd"=>"y","\xc5\xbe"=>"z","\xc3\x81"=>"A",
"\xc3\x84"=>"A","\xc4\x8c"=>"C","\xc4\x8e"=>"D","\xc3\x89"=>"E","\xc4\x9a"=>"E",
"\xc3\x8d"=>"I","\xc4\xbd"=>"L","\xc4\xb9"=>"L","\xc5\x87"=>"N","\xc3\x93"=>"O",
"\xc3\x96"=>"O","\xc5\x90"=>"O","\xc3\x94"=>"O","\xc5\x98"=>"R","\xc5\x94"=>"R",
"\xc5\xa0"=>"S","\xc5\xa4"=>"T","\xc3\x9a"=>"U","\xc5\xae"=>"U","\xc3\x9c"=>"U",
"\xc5\xb0"=>"U","\xc3\x9d"=>"Y","\xc5\xbd"=>"Z"
);

return strtr($string, $table);
}

return iconv("utf-8", "us-ascii//TRANSLIT", $string);
}

zde je metoda, který udělá pěkný url-like tvar:
        /**

* Renders cool url
* Strips diacritics and replaces non-alfanumeric chars by dash
* @author Jakub Vrana
* @link http://php.vrana.cz
* @param string $string
* @return string
*/
public static function toCoolUrl($string) {
$string = preg_replace('~[^\\pL0-9_]+~u', '-', $string);
$string = trim($string, '-');
$string = self::toAscii($string);
$string = strtolower($string);
$string = preg_replace('~[^-a-z0-9_]+~', '', $string);

return $string;
}

Nahlásit jako SPAM
IP: 90.179.27.–
http://jan.skrasek.com@hrachcz – webdeveloper
marioff0
Expert
17. 11. 2009   #9
-
0
-

tak isto mozem odporucit hrachove odporucanie :) , sam ho totiz uzivam k ABSOLUTNEJ spokojnosti...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 73 hostů

Podobná vlákna

Použití iconv() — založil jumi

Problem... — založil

Problém s TP — založil kodooo

Problem — založil Pavel

Problém s if else — založil Mortimer

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý