mb_stripos.phpt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. --TEST--
  2. mb_stripos()
  3. --SKIPIF--
  4. <?php
  5. extension_loaded('mbstring') or die('skip');
  6. function_exists('mb_stripos') or die("skip mb_stripos() is not available in this build");
  7. ?>
  8. --FILE--
  9. <?php
  10. // TODO: Add more encodings
  11. //$debug=true;
  12. ini_set('include_path','.');
  13. include_once('common.inc');
  14. // Test string
  15. $euc_jp = b'0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
  16. // EUC-JP - With encoding parameter
  17. mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
  18. echo "== POSITIVE OFFSET ==\n";
  19. print mb_stripos($euc_jp,b'日本語', 0, 'EUC-JP') . "\n";
  20. print mb_stripos($euc_jp, b'0', 0, 'EUC-JP') . "\n";
  21. print mb_stripos($euc_jp, 3, 0, 'EUC-JP') . "\n";
  22. print mb_stripos($euc_jp, 0, 0, 'EUC-JP') . "\n";
  23. print mb_stripos($euc_jp,b'日本語', 15, 'EUC-JP') . "\n";
  24. print mb_stripos($euc_jp, b'0', 15, 'EUC-JP') . "\n";
  25. print mb_stripos($euc_jp, 3, 15, 'EUC-JP') . "\n";
  26. print mb_stripos($euc_jp, 0, 15, 'EUC-JP') . "\n";
  27. // Negative offset
  28. // Note: PHP Warning - offset is negative.
  29. // Note: For offset(-15). It does not return position of latter string. (ie the same result as -50)
  30. echo "== NEGATIVE OFFSET ==\n";
  31. $r = mb_stripos($euc_jp,b'日本語', -15, 'EUC-JP');
  32. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  33. $r = mb_stripos($euc_jp, b'0', -15, 'EUC-JP');
  34. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  35. $r = mb_stripos($euc_jp, 3, -15, 'EUC-JP');
  36. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  37. $r = mb_stripos($euc_jp, 0, -15, 'EUC-JP');
  38. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  39. $r = mb_stripos($euc_jp,b'日本語', -50, 'EUC-JP');
  40. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  41. $r = mb_stripos($euc_jp, b'0', -50, 'EUC-JP');
  42. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  43. $r = mb_stripos($euc_jp, 3, -50, 'EUC-JP');
  44. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  45. $r = mb_stripos($euc_jp, 0, -50, 'EUC-JP');
  46. ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
  47. // Out of range - should return false
  48. print ("== OUT OF RANGE ==\n");
  49. $r = mb_stripos($euc_jp,b'日本語', 40, 'EUC-JP');
  50. ($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
  51. $r = mb_stripos($euc_jp, b'0', 40, 'EUC-JP');
  52. ($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
  53. $r = mb_stripos($euc_jp, 3, 40, 'EUC-JP');
  54. ($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
  55. $r = mb_stripos($euc_jp, 0, 40, 'EUC-JP');
  56. ($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
  57. // Note: Returned NULL string
  58. // echo gettype($r). ' val '. $r ."\n";
  59. // Non-existent
  60. echo "== NON-EXISTENT ==\n";
  61. $r = mb_stripos($euc_jp, b'韓国語', 0, 'EUC-JP');
  62. ($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
  63. $r = mb_stripos($euc_jp, b"\n", 0, 'EUC-JP');
  64. ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
  65. // EUC-JP - No encoding parameter
  66. echo "== NO ENCODING PARAMETER ==\n";
  67. mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
  68. print mb_stripos($euc_jp,b'日本語', 0) . "\n";
  69. print mb_stripos($euc_jp, b'0', 0) . "\n";
  70. print mb_stripos($euc_jp, 3, 0) . "\n";
  71. print mb_stripos($euc_jp, 0, 0) . "\n";
  72. $r = mb_stripos($euc_jp,b'韓国語', 0);
  73. ($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
  74. $r = mb_stripos($euc_jp,b"\n", 0);
  75. ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
  76. // EUC-JP - No offset and encoding parameter
  77. echo "== NO OFFSET AND ENCODING PARAMETER ==\n";
  78. mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
  79. print mb_stripos($euc_jp,b'日本語') . "\n";
  80. print mb_stripos($euc_jp, b'0') . "\n";
  81. print mb_stripos($euc_jp, 3) . "\n";
  82. print mb_stripos($euc_jp, 0) . "\n";
  83. $r = mb_stripos($euc_jp,b'韓国語');
  84. ($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
  85. $r = mb_stripos($euc_jp,b"\n");
  86. ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
  87. // Invalid Parameters
  88. echo "== INVALID PARAMETER TEST ==\n";
  89. $r = mb_stripos($euc_jp,'','EUC-JP');
  90. ($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n");
  91. $r = mb_stripos($euc_jp, $t_ary, 'EUC-JP');
  92. ($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n");
  93. $r = mb_stripos($euc_jp, $t_obj, 'EUC-JP');
  94. ($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n");
  95. $r = mb_stripos($euc_jp, $t_obj, 'BAD_ENCODING');
  96. ($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n");
  97. ?>
  98. --EXPECT--
  99. == POSITIVE OFFSET ==
  100. 10
  101. 0
  102. 3
  103. 0
  104. 34
  105. 30
  106. 33
  107. 30
  108. == NEGATIVE OFFSET ==
  109. ERR: Warning
  110. OK_NEGATIVE_OFFSET
  111. ERR: Warning
  112. OK_NEGATIVE_OFFSET
  113. ERR: Warning
  114. OK_NEGATIVE_OFFSET
  115. ERR: Warning
  116. OK_NEGATIVE_OFFSET
  117. ERR: Warning
  118. OK_NEGATIVE_OFFSET
  119. ERR: Warning
  120. OK_NEGATIVE_OFFSET
  121. ERR: Warning
  122. OK_NEGATIVE_OFFSET
  123. ERR: Warning
  124. OK_NEGATIVE_OFFSET
  125. == OUT OF RANGE ==
  126. OK_OUT_RANGE
  127. OK_OUT_RANGE
  128. OK_OUT_RANGE
  129. OK_OUT_RANGE
  130. == NON-EXISTENT ==
  131. OK_STR
  132. OK_NEWLINE
  133. == NO ENCODING PARAMETER ==
  134. 10
  135. 0
  136. 3
  137. 0
  138. OK_STR
  139. OK_NEWLINE
  140. == NO OFFSET AND ENCODING PARAMETER ==
  141. 10
  142. 0
  143. 3
  144. 0
  145. OK_STR
  146. OK_NEWLINE
  147. == INVALID PARAMETER TEST ==
  148. ERR: Warning
  149. OK_NULL
  150. ERR: Warning
  151. OK_ARRAY
  152. ERR: Warning
  153. OK_OBJECT
  154. ERR: Warning
  155. OK_BAD_ENCODING