Autor | Zpráva | ||
---|---|---|---|
Majkld Profil * |
#1 · Zasláno: 12. 4. 2013, 15:15:44 · Upravil/a: Majkld
Zdravím,
narazil jsem na problém s kódováním když zkracuji string následujícím scriptem: function zkratit($text,$delka){ if(mb_strlen($text)>$delka){ $text = htmlspecialchars(trim(mb_substr($text,0,$delka-2)))."…"; } else { $text = htmlspecialchars(trim($text)); } return $text; } Pokud je poslední znak ve stringu s diakritikou, nahradí mi ho znak �. V DB mám nastavené kódování utf8_general_ci, kódování v hlavičce taktéž utf8 a formátování souboru v PSPADu taktéž nastaveno na UTF8. V připojení do DB mám přidány rádky: mysql_query("SET NAMES utf8"); mysql_query("SET CHARACTER SET UTF8"); Netušíte kde by se mohl vyskytovat problém? Díky moc za pomoc Ještě dodám zvlášní chování, když text zkracuji na 190 znaků. Text: "Zatímco ve Spartě patří k tahounům, v národním týmu je zelenáčem. "Spojení ´Ladislav Krejčí - český reprezentant´ zní moc hezky. Udělám maximum, aby to platilo co nejdéle," říká dvacetiletý záložník s šikovnou levačkou. " Jednou se mi text zkrátí takto: "Zatímco ve Spartě patří k tahounům, v národním týmu je zelenáčem. "Spojení ´Ladislav Krejčí - český reprezentant´ zní moc hezky. Udělám maximum, aby to platilo co nejd�… " (168 znaků) A např. při dalším obnovení již: "Zatímco ve Spartě patří k tahounům, v národním týmu je zelenáčem. "Spojení ´Ladislav Krejčí - český reprezentant´ zní moc hezky. Udělám maximum, aby to platilo co nejdéle," říká dvacetilet…" (190 znaků) Díky moc za rady. |
||
Alphard Profil |
#2 · Zasláno: 12. 4. 2013, 15:42:55
Zkoušel jste zadat kódování ještě jako 4. parametr funkce mb_substr()?
|
||
Milkys Profil |
Majkld:
jestli ti to pomůže, zkus nasadit toto: function Orez($text) { $zkraceny_text = mb_substr($text,'0','130','UTF-8'); $str_end = mb_strrpos($zkraceny_text," ",'10','UTF-8'); $zkraceny_text = mb_substr($zkraceny_text,'0',$str_end,'UTF-8'); if ($zkraceny_text != '') { return $zkraceny_text.= '...'; } else return ''; } |
||
Časová prodleva: 11 let
|
0