Bug #65080 [Opn]: ctype_lower detects non-lower characters

From: Date: Fri, 08 May 2015 23:11:54 +0000
Subject: Bug #65080 [Opn]: ctype_lower detects non-lower characters
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-192598@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=65080&edit=1

 ID:                 65080
 Updated by:         cmb@php.net
 Reported by:        masakielastic at gmail dot com
 Summary:            ctype_lower detects non-lower characters
 Status:             Open
 Type:               Bug
 Package:            Strings related
 Operating System:   Mac OSX
 PHP Version:        5.5.0
 Block user comment: N
 Private report:     N

 New Comment:

Related to bug #63663.


Previous Comments:
------------------------------------------------------------------------
[2013-06-21 01:47:19] masakielastic at gmail dot com

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 this bug report at https://bugs.php.net/bug.php?id=65080&edit=1


Thread (2 messages)

« previous php.bugs (#192598) next »