ID: 22415 Comment by: michael dot mauch at gmx dot de Reported By: admin at naxe dot net Status: Open Bug Type: Strings related Operating System: Linux Red Hat v7.3 PHP Version: 4.3.0 New Comment:
Your LANG [EMAIL PROTECTED] uses the ISO-8859-15 character set - that's the one with the Euro sign. At character position 180 it has a "Z" with a little "v" (caron) above, and at character position it has the "z" with the little "v" (caron) above - so strtolower() is correct. See "man iso-8859-15", if your system has that man page. Previous Comments: ------------------------------------------------------------------------ [2003-02-25 08:58:51] admin at naxe dot net Hi, thanks for your replies. As you can see on my phpinfo() I have this environment setting: LANG [EMAIL PROTECTED] I think it was from the Red Hat v7.3 installation. I tested the script, as you suggested, with LANG=C (the same language settings that I have on the other server) and it works. But I think that this behaviour is still very strange, why my setting of it_IT will produce this problem: strtolower(chr(180)) results in chr(184)? I think this is an important issue for code portability. Thanks. ------------------------------------------------------------------------ [2003-02-25 08:24:28] [EMAIL PROTECTED] And also try inserting setlocale(LC_CTYPE, "C"); on top of your script. ------------------------------------------------------------------------ [2003-02-25 08:20:41] [EMAIL PROTECTED] strtolower's behaviour depends on the locale settings (LC_CTYPE), and the settings are different on each server, so the reported behaviour seems to be quite expectable for me. Setting LANG=C would solve your problem? ------------------------------------------------------------------------ [2003-02-25 08:18:31] [EMAIL PROTECTED] from the manual page on strtolower: "Note that 'alphabetic' is determined by the current locale. " are you sure that this is not just a locale settings problem? ------------------------------------------------------------------------ [2003-02-25 08:05:45] admin at naxe dot net Hi, I make massive use of PHP so I tested many times before report this that I think is a bug: This is the example script: $ch=chr(180); echo $ch; echo strtolower($ch); echo strtoupper($ch); The result will be this: ´¸´ instead of this: ´´´ This bug seems that occur only with PHP v4.3.0, I tested it also with PHP v4.2.2 ad it was ok. I uploaded the script on two different server of mine: http://www.dez.it/test/strtolower.php here with PHP v4.2.2 (http://www.dez.it/test/phpinfo.php for phpinfo) http://www.postare.it/test/strtolower.php here with PHP v4.3.0 (http://www.postare.it/test/phpinfo.php for phpinfo) As said the first link works ok, the seconds has this strange behaviour, it modify chr(180) to chr(184). I haven't tested with all the ascii set. I hope this report was useful. Good debug. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22415&edit=1