Autor Zpráva
Vojta H.
Profil *
Dobrý den všem, mám malý dotaz ohledně multibytových funkcí.

PHP i XHTML mi jede v UTF-8, vše bez problému. ALE!

Narazil jsem na problém, když jsem chtěl z řetězce "vyseknout" nějakou jeho část. Mějme následující příklad:

Uživatel zavolal stránku "priklad.php?neco=šušušu":

$neco = $_GET ['neco'];

$necojineho = substr ($neco, 0, 2);

Kýžený výsledek: šušu

$necojineho však obsahuje nesmysly.

Chápu, že funkce substr () není dělaná na UTF-8 a měla by se místo ní použít funkce mb_substr ().
Ale co dělat v případě, že jsou na hostingu funkce mb_ zakázané? Dá se to udělat jinak?

Děkuji všem za vyřešení této (pro mě) záhady.
Alphard
Profil
Děkuji všem za vyřešení této (pro mě) záhady.
není to záhada :-) UTF se chová jinak
něco podobného se zde již řešilo (zjištění délky v UTF, kde nefungovalo strlen), zkus to najít
jinak máš v záloze funkci iconv();
DoubleThink
Profil *
Ale co dělat v případě, že jsou na hostingu funkce mb_ zakázané?
Změnit hosting - multibyte funkce jsou součástí jádra a pro většinu projektů jsou naprosto nezbytné.
Vojta H.
Profil *
Nezbytné... takže vy ty funkce normáln používáte? Nebo jak to děláte vy?

Dotaz: Ale iconv() také není zrovna standardní funkce, ne? Tím myslím, že není součástí jádra? Nebo se mýlím?

Děkuji :).
DoubleThink
Profil *
takže vy ty funkce normáln používáte?
Ano, protože se bez nich prakticky nedá obejít (nebo s velkými obtížemi).

Ale iconv() také není zrovna standardní funkce, ne?
Je to standardní funkce, součástí každé distribuce PHP, zapnutá na drtivé většině hostingů.
v6ak
Profil
Funkci substr pro utf-8 si lze napsat - pokud se nemýlím:
je-li ord(znak)>127 =>znak má pokračování
jinak =>znak končí
pokud se mýlím, tak se omlouvám.
thingwath
Profil
v6ak
Jo, jasně že jde. Ale...
v6ak
Profil
... ale pokud nemáte dobrý webhosting, asi vám nic jiného nezbývá ...

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