Šta je novo?

PHP, UTF-8 string compare, naša slova = problem!

  • Začetnik teme Začetnik teme kovacm
  • Datum pokretanja Datum pokretanja

kovacm

Čuven
Učlanjen(a)
28.01.2005
Poruke
8,608
Poena
870
Imam problem sa upoređivanjem dva stringa (case insensitive) koja sadrže naše karatere (UTF-8 encoding).

mb_eregi bi trebao da služi za to (case insensitive, UTF-8 upoređivanje) ali jednostavno sa našim karaterima ne radi (naša velika slova ŠĐČĆŽ)!

primer:
if ((mb_eregi("Čačak","čačak")==1) {...}

neće vratiti 1 (zbog velikog slova Č)!

takođe sam stavio:

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

da li je neko imao iskustva sa ovim ili ima neku drugu ideju na koji način mogu da uporedim case insensitive dva stringa sa našim karaterima??
btw jedino rešenje je da spustim sve stringove sa mb_strtolower i onda da odradim compare.

Hvala!
 
Poslednja izmena:
Evo ga:

PHP:
<?php
$a = mb_convert_case('Čačak', MB_CASE_LOWER, "UTF-8");
$b = 'čačak';

if (eregi($a, $b)==1) {
	echo 1;
}
?>

Prvo ga pretvori u lowercase, pa onda uporedi. Funkcija strtolower() ne radi kada je UTF-8 u pitanju, pa zato koristi ovu drugu.
 
mislis ono sto sam vec napisao... 😉

"btw jedino rešenje je da spustim sve stringove sa mb_strtolower i onda da odradim compare."

u svakom slučaju sam potrošio nekoliko nekvalitetnih sati provaljujući šta se dešava sa našim slovima u PHPu... 🙂
 
Ne vidim zašto je ovo problem da se uradi na ovaj način jer je rezultat postignut?
Kada imaš ovakve probleme, idi na www.php.net jer su uglavnom već rešeni.
 
ma prvo sam koristio ne-mb funkcije i nije mi bilo jasno sta se desava sa stringovima 😀

uradim ucwords i dobijem neki blesav rezultat... i na kraju sam se toliko sludeo da sam zaboravio sta sam prvo hteo da uradim 😀
 
Ma kazi im da ce aplikacija ispravno da radi samo u Beogradu, Novom Sadu, Subotici, Kragujevcu... 😀
 
😀 😀 😀 i da netje raditi sa Petrovitjima, Jovanovitjima... :d
 
Nazad
Vrh Dno