#21708 [Opn]: ucfirst() trouble again

From: Date: Fri, 17 Jan 2003 22:00:29 +0000
Subject: #21708 [Opn]: ucfirst() trouble again
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-30396@lists.php.net to get a copy of this message
ID: 21708 Updated by: moriyoshi@php.net Reported By: overseas@mtu-net.ru Status: Open Bug Type: Strings related Operating System: Win 2000 Pro Russian + SP2 PHP Version: 4.3.0 New Comment: Hmm, you can use mb_convert_case() instead if mbstring extension is enabled. http://www.php.net/mb_convert_case Previous Comments: ------------------------------------------------------------------------ [2003-01-17 15:12:22] overseas@mtu-net.ru Thank's. I tried to do this. No effect. =( I think it can be feature of PHP under Win32 ;-) ------------------------------------------------------------------------ [2003-01-17 04:50:28] moriyoshi@php.net Try this: setlocale(LC_CTYPE,"Russian.1251"); Windows locale string convension is different to *nix's. See http://msdn.microsoft.com/library/en-us/vccore98/html/_crt_language_and_country_strings.asp for detail. ------------------------------------------------------------------------ [2003-01-17 04:18:46] overseas@mtu-net.ru Code: <? setlocale(LC_ALL,"ru_RU.cp1251"); $str = "ÞËÀ"; echo ucwords(strtolower($str)); ?> Result: Þëà ------------------------------------------------------------------------ [2003-01-17 03:49:30] overseas@mtu-net.ru This bug only for Win32 =) ucwords() function once again does not work properly with strings containing international characters. Thus, any character following the "þ"(ACSII code == 254) or "Þ"(ACSII code == 222) letter will always be uppercase. Code: <? setlocale(LC_CTYPE,"ru_RU.cp1251"); $str[] = "ÏÐÎÑÒÎ"; $str[] = "ÒÞÐÜÌÀ"; $str[] = "ËþÁÎÂÍÈÊ"; $str[] = "ËÞÁÎÂÍÈÊ"; $str[] = "ËÓÁÎÂÍÈÊ =)"; $str[] = "ËÞÄÈ"; $str[] = "ëþäè"; for ($i=0;$i<sizeof($str);$i++) { echo ucwords(strtolower($str[$i]))."<br>"; } ?> Result: Ïðîñòî ÒþÐüìà ËþÁîâíèê ËþÁîâíèê Ëóáîâíèê =) ËþÄè ËþÄè ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21708&edit=1

« previous php.bugs (#30396) next »