mb_strlen.phpt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. --TEST--
  2. mb_strlen()
  3. --EXTENSIONS--
  4. mbstring
  5. --FILE--
  6. <?php
  7. // TODO: Add more encodings
  8. ini_set('include_path', __DIR__);
  9. include_once('common.inc');
  10. // restore detect_order to 'auto'
  11. mb_detect_order('auto');
  12. // Test string
  13. $euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
  14. $ascii = 'abcdefghijklmnopqrstuvwxyz;]=#0123456789';
  15. // ASCII
  16. echo "== ASCII ==\n";
  17. print mb_strlen($ascii,'ASCII') . "\n";
  18. print strlen($ascii) . "\n";
  19. // EUC-JP
  20. echo "== EUC-JP ==\n";
  21. print mb_strlen($euc_jp,'EUC-JP') . "\n";
  22. mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
  23. print strlen($euc_jp) . "\n";
  24. // SJIS
  25. echo "== SJIS ==\n";
  26. $sjis = mb_convert_encoding($euc_jp, 'SJIS','EUC-JP');
  27. print mb_strlen($sjis,'SJIS') . "\n";
  28. mb_internal_encoding('SJIS') or print("mb_internal_encoding() failed\n");
  29. print strlen($sjis) . "\n";
  30. // JIS
  31. // Note: either convert_encoding or strlen has problem
  32. echo "== JIS ==\n";
  33. $jis = mb_convert_encoding($euc_jp, 'JIS','EUC-JP');
  34. print mb_strlen($jis,'JIS') . "\n";
  35. mb_internal_encoding('JIS') or print("mb_internal_encoding() failed\n");
  36. print strlen($jis) . "\n";
  37. // UTF-8
  38. // Note: either convert_encoding or strlen has problem
  39. echo "== UTF-8 ==\n";
  40. $utf8 = mb_convert_encoding($euc_jp, 'UTF-8','EUC-JP');
  41. print mb_strlen($utf8,'UTF-8') . "\n";
  42. mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
  43. print strlen($utf8) . "\n";
  44. // Wrong Parameters
  45. echo "== WRONG PARAMETERS ==\n";
  46. // Wrong encoding
  47. mb_internal_encoding('EUC-JP');
  48. try {
  49. var_dump( mb_strlen($euc_jp, 'BAD_NAME') );
  50. } catch (\ValueError $e) {
  51. echo $e->getMessage() . \PHP_EOL;
  52. }
  53. ?>
  54. --EXPECT--
  55. == ASCII ==
  56. 40
  57. 40
  58. == EUC-JP ==
  59. 43
  60. 72
  61. == SJIS ==
  62. 43
  63. 72
  64. == JIS ==
  65. 43
  66. 90
  67. == UTF-8 ==
  68. 43
  69. 101
  70. == WRONG PARAMETERS ==
  71. mb_strlen(): Argument #2 ($encoding) must be a valid encoding, "BAD_NAME" given