Autor Zpráva
Adam90
Profil *
Dobry den

U stranky, obsahujici PHP kod mam nastavene kodovani stranky jako "utf-8." Pokud vypisu znaky normalne, pomoci echo "***" funguji s diakritikou spravne, ale pokud pouziji funkci na odstraneni diakritiky a mezer (viz. zdroj stranky na konci tohoto postu), vraci nesmyslne hodnoty.

Mohl by mi prosim nekdo rict, kde delam chybu ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>***</title>
</head>
<body>
<?php
function uprav($text)
{
return StrTr($text,
" ěščřžýáíéúůřďňĺäë?öü?óĚŠČŘŽÝÁÍÉÚŮŘĎŇĽÄË?ÖÜ?Ó",
"-escrzyaieuurdnlaeiouyoESCRZYAIEUURDNLAEIOUYO");
}

$string = "<p>Žluťoučký kůň úpěl ďábelské ódy</p>";
$upraveno = uprav($string);
echo $string;
echo $upraveno;

?>
</body>
</html>
koudi
Profil
problém je v tom (co sem tak pochopil), že utf používá pro jeden znak více bytů a všechny tyhle funkce počítaj s tim, že jeden znak = jeden byt, takže musíš použít jinou. tyhle funkce začínaj na "mb_" (multi-byte) a pak už sou ty názvy funkcí podobný - ale StrTr sem v manuálu nenašel.
Adam90
Profil *
Neco takoveho jsem tusil, vzhledem k tomu, co mi to vraci :

žluťoučký kůň úpěl ďábelské ódy - spravna verze
ZluZouAykYr-kZNZY-YIpAsl-ARYnbelskYi-YOdy - verze protlačená funkcí


Kdyby nekdo znal nejakou fci, kterou by se to dalo nahradit, ozvete se prosim. ten mb_StrTr fakt neexistuje :-)
P3tr
Profil
Doporucil bych v te tve transformacni fci pracovat se single byte znaky, muzes pak pouzivat klasicke stringove fce bez toho, ze by ti to podelalo vstupni retezec ($text).
String na vstupu bych prevedl treba na na iso-8852 pomoci iconv.
Na vystupu to zase muzes pretransformovat zpatky na utf-8, opet iconv.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0