ID: 42101 Updated by: [EMAIL PROTECTED] Reported By: mcorne at yahoo dot com -Status: Assigned +Status: No Feedback Bug Type: mbstring related Operating System: Linux x86-64 PHP Version: 5.2.4RC2-dev Assigned To: hirokawa New Comment:
No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. Previous Comments: ------------------------------------------------------------------------ [2007-09-22 01:32:00] [EMAIL PROTECTED] I reproduced the same issue with mb_substr() on my Athlon 64/x2 machine. I believe that substr() is also has the same 64bit issue. It is a sample script (tested on my x86/64 Ubuntu Linux, Athlon 64x2) <?php echo substr("\x44\xCC\x87", 0, 1024); // output: 0x44,0xcc,0x87 echo substr("\x44\xCC\x87", 0, PHP_INT_MAX); // output: 0x44,0xcc echo substr("\x44\xCC\x87", 0, PHP_INT_MAX-1); // output: 0x44 echo substr("\x44\xCC\x87", 0, PHP_INT_MAX-2); // output: ?> I think PHP itself is not 64bit compatible. Why didn't you submit a bug report for substr() ? ------------------------------------------------------------------------ [2007-08-17 13:49:09] [EMAIL PROTECTED] Assigned to the maintainer of mbstring extension. ------------------------------------------------------------------------ [2007-08-15 06:45:07] mcorne at yahoo dot com Same issue on the latest release. Test done on: PHP Version => 5.2.4RC2-dev System => Linux durbatuluk 2.6.20-16-generic #2 SMP Thu Jun 7 19:00:28 UTC 2007 x86_64 Build Date => Aug 13 2007 21:59:11 ------------------------------------------------------------------------ [2007-07-25 12:10:28] mcorne at yahoo dot com Description: ------------ mb_substr("\x44\xCC\x87", 0, PHP_INT_MAX, 'UTF-8') only captures the first character on linux 64-bit instead of returning the whole string. Note that this works fine on Windows XP and Linux 32-bit. Reproduce code: --------------- function substring($string, $length) { $substr = mb_substr($string, 0, $length , 'UTF-8'); $length = strlen($substr); $chars = $length? unpack("C{$length}chars", $substr) : array(); $decs = array_map('dechex', $chars); return array($substr, $decs); } $test['string'] = "\x44\xCC\x87"; $test['utf8'] = '\x44\xCC\x87'; $test['unicode'] = '\u0044\u0307'; $test['PHP_INT_MAX'] = PHP_INT_MAX; $test['php_int_max'] = substring($test['string'], PHP_INT_MAX); $test['9999'] = substring($test['string'], 9999); print_r($test); Expected result: ---------------- Array ( [string] => Ḋ [utf8] => \x44\xCC\x87 [unicode] => \u0044\u0307 [PHP_INT_MAX] => 2147483647 [php_int_max] => Array ( [0] => Ḋ [1] => Array ( [chars1] => 44 [chars2] => cc [chars3] => 87 ) ) [9999] => Array ( [0] => Ḋ [1] => Array ( [chars1] => 44 [chars2] => cc [chars3] => 87 ) ) ) Actual result: -------------- Array ( [string] => Ḋ [utf8] => \x44\xCC\x87 [unicode] => \u0044\u0307 [PHP_INT_MAX] => 2147483647 [php_int_max] => Array ( [0] => D [1] => Array ( [chars1] => 44 ) ) [9999] => Array ( [0] => Ḋ [1] => Array ( [chars1] => 44 [chars2] => cc [chars3] => 87 ) ) ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=42101&edit=1