Autor Zpráva
zkrma
Profil *
Ahoj. Ve svém php 5.3 skriptu porovnávám utf8 řetězce. Chtěl bych docílit stejného chování jako třeba v mysql (např. č < d), ale nějak se mi to v php nedaří.
setlocale(LC_ALL, 'cs_CZ.UTF-8');
$str1 = 'dytrý';
$str2 = 'čytrý';
var_dump(strcmp($str1, $str2));
var_dump($str1 > $str2);

oba vracejí špatný výsledek (-1, false)

Co dělám špatně?
A proč vlastně existuje vůbec v php fce strcmp, když jde porovnávat operátory?
Stano
Profil
nehľadáš napríklad http://php.net/manual/en/function.similar-text.php to vracia percentuálnu zhodu dvoch stirngov
Keeehi
Profil
zkrma:
S první otázkou vám moc neporadím. Jen jsem zjistil, že strcmp by snad mělo ignorovat setlocale. Zato strcoll by se mělo jím řídit. Zase by tam mohl být problém, že není binary safe.

Na druhou otázku odpovím jednoduše. Na obyčejné porovnání by měl stačit operátor. strcmp vám i řekne, jak je rozdíl veliký.

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: