Autor Zpráva
sniclman
Profil *
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
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 *
Majkl578:
Díky, funguje to perfektně, jenom nerozumím dokonale tomu regulárnímu výrazu.
Majkl578
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0