Autor | Zpráva | ||
---|---|---|---|
sniclman Profil * |
#1 · Zasláno: 7. 9. 2011, 00:33:51
Dobrý večer,
Mám samostatný PHP soubor pro Ajax, ve kterým se vypisuje text z databáze (kódování databáze v UTF-8) a následně by se měl text ošetřit pomocí wordwrap. $string = "ěščřžýáíé"; $string = wordwrap($string , 5, "<br> \n", true); echo $string; Vypíše pouze nesmyslné znaky Ä›ĹˇÄ ŤĹ™Ĺľ ýáà é Můžete mi prosím poradit jak ošetřit funkci "wordwrap" aby byla správně kódována? Děkuji. |
||
Majkl578 Profil |
#2 · Zasláno: 7. 9. 2011, 00:57:01
Funkce
wordwrap nerozlišuje multibyte znaky, a proto dostáváš takový výstup.
Jde to (ošklivě) řešit dočasným převedením do jiného kódování a nebo třeba reguláry: $string = 'ěščřžýáíéěščřžýáíé lorem ipsum dolor sit amet'; $string = preg_replace('~.{1,10}(?=[\s\x00-/:-@\[-`{-\~])|.{10}~us', "\\0<br>\n", $string); // inspirace v http://api.nette.org/2.0/source-Utils.Strings.php.html#173 echo $string; |
||
sniclman Profil * |
#3 · Zasláno: 7. 9. 2011, 07:20:57
Majkl578:
Díky, funguje to perfektně, jenom nerozumím dokonale tomu regulárnímu výrazu. |
||
Majkl578 Profil |
#4 · Zasláno: 7. 9. 2011, 18:06:45 · Upravil/a: Majkl578
Pokusí se najít 1-10 znaků následovaných jedním z těch uvedených v
(?=[...]) , pokud najde, zalomí to za posledním znakem. To za pajpou (svislítkem) říká, že pokud nenajde, natvrdo zalomí po 10 znacích.
|
||
Časová prodleva: 13 let
|
0