Bug #65080 [NEW]: ctype_lower detects non-lower characters
From: masakielastic at gmail dot com
Operating system: Mac OSX
PHP version: 5.5.0
Package: Strings related
Bug Type: Bug
Bug description:ctype_lower detects non-lower characters
Description:
------------
ctype_lower detects non-lower characters when the local is set to
'en_US.UTF-8'
on Mac OSX 10.8. This phenomenon cannot't be reproduced on Ubuntu Linux.
This phenomenon means ctype_lower detects Chinese characters and Hangul
(Korean
Alphabet) which have no concept about lower and upper cases.
The test cases for C language and showing misdetected characters can be
seen
here:
https://gist.github.com/masakielastic/5828106
The tests for BSD-compatible OSes are needed judging from Xcode's manual.
http://developer.apple.com/library/Mac/documentation/Darwin/Reference/ManPages/m
an3/islower.3.html
ctype_upper also detects non-upper characters.
Test script:
---------------
$expected = [];
$result = [];
for ($i = 0; $i <= 0xFF; ++$i) {
setlocale(LC_ALL, 'C');
if (ctype_lower(chr($i))) {
$expected[] = $i;
}
setlocale(LC_ALL, 'en_US.UTF-8');
if (ctype_lower(chr($i))) {
$result[] = $i;
}
}
var_dump(
[] === array_diff($result, $expected)
);
Expected result:
----------------
bool(true)
Actual result:
--------------
bool(false)
--
Edit bug report at https://bugs.php.net/bug.php?id=65080&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=65080&r=trysnapshot54
Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=65080&r=trysnapshot53
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=65080&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=65080&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=65080&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=65080&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=65080&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=65080&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=65080&r=support
Expected behavior: https://bugs.php.net/fix.php?id=65080&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=65080&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=65080&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=65080&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65080&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=65080&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=65080&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=65080&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65080&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=65080&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=65080&r=mysqlcfg
Thread (2 messages)
- masakielastic at gmail dot com