Autor Zpráva
Matess
Profil *
Ahoj nevíte náhodou někdo proč mi fce substr() koní české znaky?

echo substr('asdfž', -2, 2); // vypíše pouze ž místo fž
echo substr('asdžf', -2, 2); // vypíše �f (nějaká divná čárka + f) místo žf

pokud je český znak až na konci, tak se vypíše pouze on, ale pokud je předposlední, tak to vypíše nějaký nesmysl.

Prosím poraďte co dělám špatně.
Děkuji
Taps
Profil
Matess
pokud používáš kodování UTF-8 tak zkus mb_substr
avenger
Profil
Znak s háčkem nebo čárkou zabírá 2 místa. Takže v tvém případě musíš mít:

echo substr('asdfž', -3, 3); // vypíše fž
echo substr('asdžf', -3, 3); // vypíše žf
AM_
Profil
avenger
většinou, když tu funkci používáš, nevíš, co bude na vstupu, to by jinak ani nemělo smysl ji použít, že. Takže, jak píše Taps, při UTF-8 je nutné používat mb_* funkce.
Matess
Profil *
AM_
Taps
Díky.
Matess
Profil *
Taps
AM_
Tak to pořád nejde.
Problém se opakuje pořád dokola.

Prosím poraďte někdo čím by to mohlo být?
Matess
Profil *
Takže mi nikdo neporadí?
jso
Profil *
echo mb_substr('asdfž', -2, 2, 'utf-8')
echo mb_substr('asdžf', -2, 2, 'utf-8')
Matess
Profil *
jso
Taky bohužel ne.
Vypíše to :
f�
�f
Matess
Profil *
jso
Tak už to mám.
Děkuji
jso
Profil *
Matess
tak napiš pro ostatní řešení
Jan Tvrdík
Profil
jso:
Tvé řešení funguje (Pokud teda pracuje v UTF-8).
jso
Profil *
Jan Tvrdík
právě proto jsem se ptal, co nad tím vymyslel. Ono já php neumím...
Matess
Profil *
Omlouvám se špatně jsem to napsal.
Řešení jso opravdu funguje.

Mě to nešlo, protože jsem si přepnul kodování v PsPadu.

Ještě jednou se omlouvám a děkuji.

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