strtoupper() magyar karakterekre...

strtoupper() magyar karakterekre...

Hozzászólások

Amint a topik címe is elárulja, van egy ilyen gondom: az input stringet át kéne varázsolni nagybetűsre, azonban a strtoupper("ördöngösség") ezzel tér vissza: öRDöNGöSSéG.
Az mb_strtoupper() használatára nincs lehetőség.
Van valakinek valami épkézláb megoldása? (Ja, str_replace("ö","Ö", $str) se működik...). A script ISO-8859-2 kódolású, ettől se lehet eltérni.
Előre köszönöm.

setlocale(LC_CTYPE, "hu_HU")
vagy valami hasonló...

Célszerűbb mindent kisbetűsíteni, abból kisebb bajod lesz. Gondolom arról van szó, hogy a kis-nagybetűket ne különböztesse meg a rendszer.

[code:1:716d8d201c]$string1 = "éáőúöüóűí";

for ($i=0; $i<strlen($string1); $i++){

echo $string1[$i]." (".ord($string1[$i]).")\n";

}

$string2 = "ÉÁŐÚÖÜÓŰÍ";

for ($i=0; $i<strlen($string2); $i++){

echo $string2[$i]." (".ord($string2[$i]).")\n";

}[/code:1:716d8d201c]
Aztán ez alapján legrosszabb esetben egy str_replace, de gyanítom, hogy egyszerűbben is lehetne.
Vagy próbálj más stringeket ord()-olni, hátha az segít.

Na, most derült ki, hogy az adatbázis iso-8859-1 -es kódolást használ. Így a megoldás a következő:
$keres=preg_replace(array('/([a-z])/e','/í/','/é/','/á/','/ű/','/ő/','/ú/','/ö/','/ü/','/ó/'),array("strtoupper('\\1')",'Í','É','Á','Ű','Ő','Ú','Ö','Ü','Ó'),$keres);