Autor Zpráva
Paterka Pavel
Profil *
Kolem tohoto kódování u mně panují pořád nejasnosti, dle doporučení různých webů se ho snažím přesto na svém prvním jednoduchém webu používat, ale u registrace uživatelů bych ho chtěl nějak detekovat. Jelikož potřebuji zjistit zda-li zadané heslo nebo přezdívka neobsahuje právě 4 bajtové znaky (které tam nechci mít)...

1) Jakou funkcí spolehlivě detekovat jestli řetězec obsahuje 4 bajtový utf8 znak?

2) Existuje někde přehled 4 bajtových znaků UTF-8?

3) Respektují korektně PHP funkce typu mb_...() kódování utf8mb4? / používám PHP 7.0

Děkuji
Tomášeek
Profil
Paterka Pavel:
U přezdívky se dá pracovat s rozsahem (typicky písmena/číslice). Nevím, jestli chceš povolit všechny 2bitové znaky.

U hesla ti pak může být buřt, co chce kdo použít. Zahashuj, co si kdo zadá a zbytečně neomezuj.
Keeehi
Profil
Paterka Pavel:
zjistit zda-li zadané heslo nebo přezdívka neobsahuje právě 4 bajtové znaky (které tam nechci mít).
No, u přezdívky možná ale proč tě to zajímá u hesla. Jako heslo by jsi měl dovolit uživateli mít naprosto libovolný řetězec.

Pokud chceš zjistit kolik bajtů má $i-tý znak v řetězci tak můžeš použít
strlen(mb_substr($string, $i, 1, "utf-8"))

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