mb_strlen_variation3.phpt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. --TEST--
  2. Test mb_strlen() function : usage variations - Pass list of encodings
  3. --SKIPIF--
  4. <?php
  5. extension_loaded('mbstring') or die('skip');
  6. function_exists('mb_strlen') or die("skip mb_strlen() is not available in this build");
  7. ?>
  8. --FILE--
  9. <?php
  10. /* Prototype : int mb_strlen(string $str [, string $encoding])
  11. * Description: Get character numbers of a string
  12. * Source code: ext/mbstring/mbstring.c
  13. */
  14. /*
  15. * Pass all encodings listed on php.net to mb_strlen to test that function recognises them
  16. * NB: The strings passed are *NOT* necessarily encoded in the encoding passed to the function.
  17. * This test is purely to see whether the function recognises the encoding.
  18. */
  19. echo "*** Testing mb_strlen() : usage variations ***\n";
  20. $encoding = array('UCS-4', /*1*/
  21. 'UCS-4BE',
  22. 'UCS-4LE',
  23. 'UCS-2',
  24. 'UCS-2BE', /*5*/
  25. 'UCS-2LE',
  26. 'UTF-32',
  27. 'UTF-32BE',
  28. 'UTF-32LE',
  29. 'UTF-16', /*10*/
  30. 'UTF-16BE',
  31. 'UTF-16LE',
  32. 'UTF-7',
  33. 'UTF7-IMAP',
  34. 'UTF-8', /*15*/
  35. 'ASCII',
  36. 'EUC-JP',
  37. 'SJIS',
  38. 'eucJP-win',
  39. 'SJIS-win', /*20*/
  40. 'ISO-2022-JP',
  41. 'JIS',
  42. 'ISO-8859-1',
  43. 'ISO-8859-2',
  44. 'ISO-8859-3', /*25*/
  45. 'ISO-8859-4',
  46. 'ISO-8859-5',
  47. 'ISO-8859-6',
  48. 'ISO-8859-7',
  49. 'ISO-8859-8', /*30*/
  50. 'ISO-8859-9',
  51. 'ISO-8859-10',
  52. 'ISO-8859-13',
  53. 'ISO-8859-14',
  54. 'ISO-8859-15', /*35*/
  55. 'byte2be',
  56. 'byte2le',
  57. 'byte4be',
  58. 'byte4le',
  59. 'BASE64', /*40*/
  60. 'HTML-ENTITIES',
  61. '7bit',
  62. '8bit',
  63. 'EUC-CN',
  64. 'CP936', /*45*/
  65. 'HZ',
  66. 'EUC-TW',
  67. 'CP950',
  68. 'BIG-5',
  69. 'EUC-KR', /*50*/
  70. 'UHC',
  71. 'ISO-2022-KR',
  72. 'Windows-1251',
  73. 'Windows-1252',
  74. 'CP866', /*55*/
  75. 'KOI8-R'); /*56*/
  76. $iterator = 1;
  77. $string_ascii = 'abc def';
  78. $string_mb = base64_decode('44K/44OT44Ol44Os44O844OG44Kj44Oz44Kw44O744Oe44K344O844Oz44O744Kr44Oz44OR44OL44O8');
  79. foreach($encoding as $enc) {
  80. echo "\n-- Iteration $iterator: $enc --\n";
  81. echo "-- ASCII String --\n";
  82. if(mb_strlen($string_ascii, $enc)) {
  83. echo "Encoding $enc recognised\n";
  84. } else {
  85. echo "Encoding $enc not recognised\n";
  86. }
  87. echo "-- Multibyte String --\n";
  88. if(mb_strlen($string_mb, $enc)){
  89. echo "Encoding $enc recognised\n";
  90. } else {
  91. echo "Encoding $enc not recognised\n";
  92. }
  93. $iterator++;
  94. }
  95. echo "Done";
  96. ?>
  97. --EXPECTF--
  98. *** Testing mb_strlen() : usage variations ***
  99. -- Iteration 1: UCS-4 --
  100. -- ASCII String --
  101. Encoding UCS-4 recognised
  102. -- Multibyte String --
  103. Encoding UCS-4 recognised
  104. -- Iteration 2: UCS-4BE --
  105. -- ASCII String --
  106. Encoding UCS-4BE recognised
  107. -- Multibyte String --
  108. Encoding UCS-4BE recognised
  109. -- Iteration 3: UCS-4LE --
  110. -- ASCII String --
  111. Encoding UCS-4LE recognised
  112. -- Multibyte String --
  113. Encoding UCS-4LE recognised
  114. -- Iteration 4: UCS-2 --
  115. -- ASCII String --
  116. Encoding UCS-2 recognised
  117. -- Multibyte String --
  118. Encoding UCS-2 recognised
  119. -- Iteration 5: UCS-2BE --
  120. -- ASCII String --
  121. Encoding UCS-2BE recognised
  122. -- Multibyte String --
  123. Encoding UCS-2BE recognised
  124. -- Iteration 6: UCS-2LE --
  125. -- ASCII String --
  126. Encoding UCS-2LE recognised
  127. -- Multibyte String --
  128. Encoding UCS-2LE recognised
  129. -- Iteration 7: UTF-32 --
  130. -- ASCII String --
  131. Encoding UTF-32 recognised
  132. -- Multibyte String --
  133. Encoding UTF-32 recognised
  134. -- Iteration 8: UTF-32BE --
  135. -- ASCII String --
  136. Encoding UTF-32BE recognised
  137. -- Multibyte String --
  138. Encoding UTF-32BE recognised
  139. -- Iteration 9: UTF-32LE --
  140. -- ASCII String --
  141. Encoding UTF-32LE recognised
  142. -- Multibyte String --
  143. Encoding UTF-32LE recognised
  144. -- Iteration 10: UTF-16 --
  145. -- ASCII String --
  146. Encoding UTF-16 recognised
  147. -- Multibyte String --
  148. Encoding UTF-16 recognised
  149. -- Iteration 11: UTF-16BE --
  150. -- ASCII String --
  151. Encoding UTF-16BE recognised
  152. -- Multibyte String --
  153. Encoding UTF-16BE recognised
  154. -- Iteration 12: UTF-16LE --
  155. -- ASCII String --
  156. Encoding UTF-16LE recognised
  157. -- Multibyte String --
  158. Encoding UTF-16LE recognised
  159. -- Iteration 13: UTF-7 --
  160. -- ASCII String --
  161. Encoding UTF-7 recognised
  162. -- Multibyte String --
  163. Encoding UTF-7 recognised
  164. -- Iteration 14: UTF7-IMAP --
  165. -- ASCII String --
  166. Encoding UTF7-IMAP recognised
  167. -- Multibyte String --
  168. Encoding UTF7-IMAP recognised
  169. -- Iteration 15: UTF-8 --
  170. -- ASCII String --
  171. Encoding UTF-8 recognised
  172. -- Multibyte String --
  173. Encoding UTF-8 recognised
  174. -- Iteration 16: ASCII --
  175. -- ASCII String --
  176. Encoding ASCII recognised
  177. -- Multibyte String --
  178. Encoding ASCII recognised
  179. -- Iteration 17: EUC-JP --
  180. -- ASCII String --
  181. Encoding EUC-JP recognised
  182. -- Multibyte String --
  183. Encoding EUC-JP recognised
  184. -- Iteration 18: SJIS --
  185. -- ASCII String --
  186. Encoding SJIS recognised
  187. -- Multibyte String --
  188. Encoding SJIS recognised
  189. -- Iteration 19: eucJP-win --
  190. -- ASCII String --
  191. Encoding eucJP-win recognised
  192. -- Multibyte String --
  193. Encoding eucJP-win recognised
  194. -- Iteration 20: SJIS-win --
  195. -- ASCII String --
  196. Encoding SJIS-win recognised
  197. -- Multibyte String --
  198. Encoding SJIS-win recognised
  199. -- Iteration 21: ISO-2022-JP --
  200. -- ASCII String --
  201. Encoding ISO-2022-JP recognised
  202. -- Multibyte String --
  203. Encoding ISO-2022-JP recognised
  204. -- Iteration 22: JIS --
  205. -- ASCII String --
  206. Encoding JIS recognised
  207. -- Multibyte String --
  208. Encoding JIS recognised
  209. -- Iteration 23: ISO-8859-1 --
  210. -- ASCII String --
  211. Encoding ISO-8859-1 recognised
  212. -- Multibyte String --
  213. Encoding ISO-8859-1 recognised
  214. -- Iteration 24: ISO-8859-2 --
  215. -- ASCII String --
  216. Encoding ISO-8859-2 recognised
  217. -- Multibyte String --
  218. Encoding ISO-8859-2 recognised
  219. -- Iteration 25: ISO-8859-3 --
  220. -- ASCII String --
  221. Encoding ISO-8859-3 recognised
  222. -- Multibyte String --
  223. Encoding ISO-8859-3 recognised
  224. -- Iteration 26: ISO-8859-4 --
  225. -- ASCII String --
  226. Encoding ISO-8859-4 recognised
  227. -- Multibyte String --
  228. Encoding ISO-8859-4 recognised
  229. -- Iteration 27: ISO-8859-5 --
  230. -- ASCII String --
  231. Encoding ISO-8859-5 recognised
  232. -- Multibyte String --
  233. Encoding ISO-8859-5 recognised
  234. -- Iteration 28: ISO-8859-6 --
  235. -- ASCII String --
  236. Encoding ISO-8859-6 recognised
  237. -- Multibyte String --
  238. Encoding ISO-8859-6 recognised
  239. -- Iteration 29: ISO-8859-7 --
  240. -- ASCII String --
  241. Encoding ISO-8859-7 recognised
  242. -- Multibyte String --
  243. Encoding ISO-8859-7 recognised
  244. -- Iteration 30: ISO-8859-8 --
  245. -- ASCII String --
  246. Encoding ISO-8859-8 recognised
  247. -- Multibyte String --
  248. Encoding ISO-8859-8 recognised
  249. -- Iteration 31: ISO-8859-9 --
  250. -- ASCII String --
  251. Encoding ISO-8859-9 recognised
  252. -- Multibyte String --
  253. Encoding ISO-8859-9 recognised
  254. -- Iteration 32: ISO-8859-10 --
  255. -- ASCII String --
  256. Encoding ISO-8859-10 recognised
  257. -- Multibyte String --
  258. Encoding ISO-8859-10 recognised
  259. -- Iteration 33: ISO-8859-13 --
  260. -- ASCII String --
  261. Encoding ISO-8859-13 recognised
  262. -- Multibyte String --
  263. Encoding ISO-8859-13 recognised
  264. -- Iteration 34: ISO-8859-14 --
  265. -- ASCII String --
  266. Encoding ISO-8859-14 recognised
  267. -- Multibyte String --
  268. Encoding ISO-8859-14 recognised
  269. -- Iteration 35: ISO-8859-15 --
  270. -- ASCII String --
  271. Encoding ISO-8859-15 recognised
  272. -- Multibyte String --
  273. Encoding ISO-8859-15 recognised
  274. -- Iteration 36: byte2be --
  275. -- ASCII String --
  276. Encoding byte2be recognised
  277. -- Multibyte String --
  278. Encoding byte2be recognised
  279. -- Iteration 37: byte2le --
  280. -- ASCII String --
  281. Encoding byte2le recognised
  282. -- Multibyte String --
  283. Encoding byte2le recognised
  284. -- Iteration 38: byte4be --
  285. -- ASCII String --
  286. Encoding byte4be recognised
  287. -- Multibyte String --
  288. Encoding byte4be recognised
  289. -- Iteration 39: byte4le --
  290. -- ASCII String --
  291. Encoding byte4le recognised
  292. -- Multibyte String --
  293. Encoding byte4le recognised
  294. -- Iteration 40: BASE64 --
  295. -- ASCII String --
  296. Encoding BASE64 recognised
  297. -- Multibyte String --
  298. Encoding BASE64 recognised
  299. -- Iteration 41: HTML-ENTITIES --
  300. -- ASCII String --
  301. Encoding HTML-ENTITIES recognised
  302. -- Multibyte String --
  303. Encoding HTML-ENTITIES recognised
  304. -- Iteration 42: 7bit --
  305. -- ASCII String --
  306. Encoding 7bit recognised
  307. -- Multibyte String --
  308. Encoding 7bit recognised
  309. -- Iteration 43: 8bit --
  310. -- ASCII String --
  311. Encoding 8bit recognised
  312. -- Multibyte String --
  313. Encoding 8bit recognised
  314. -- Iteration 44: EUC-CN --
  315. -- ASCII String --
  316. Encoding EUC-CN recognised
  317. -- Multibyte String --
  318. Encoding EUC-CN recognised
  319. -- Iteration 45: CP936 --
  320. -- ASCII String --
  321. Encoding CP936 recognised
  322. -- Multibyte String --
  323. Encoding CP936 recognised
  324. -- Iteration 46: HZ --
  325. -- ASCII String --
  326. Encoding HZ recognised
  327. -- Multibyte String --
  328. Encoding HZ recognised
  329. -- Iteration 47: EUC-TW --
  330. -- ASCII String --
  331. Encoding EUC-TW recognised
  332. -- Multibyte String --
  333. Encoding EUC-TW recognised
  334. -- Iteration 48: CP950 --
  335. -- ASCII String --
  336. Encoding CP950 recognised
  337. -- Multibyte String --
  338. Encoding CP950 recognised
  339. -- Iteration 49: BIG-5 --
  340. -- ASCII String --
  341. Encoding BIG-5 recognised
  342. -- Multibyte String --
  343. Encoding BIG-5 recognised
  344. -- Iteration 50: EUC-KR --
  345. -- ASCII String --
  346. Encoding EUC-KR recognised
  347. -- Multibyte String --
  348. Encoding EUC-KR recognised
  349. -- Iteration 51: UHC --
  350. -- ASCII String --
  351. Encoding UHC recognised
  352. -- Multibyte String --
  353. Encoding UHC recognised
  354. -- Iteration 52: ISO-2022-KR --
  355. -- ASCII String --
  356. Encoding ISO-2022-KR recognised
  357. -- Multibyte String --
  358. Encoding ISO-2022-KR recognised
  359. -- Iteration 53: Windows-1251 --
  360. -- ASCII String --
  361. Encoding Windows-1251 recognised
  362. -- Multibyte String --
  363. Encoding Windows-1251 recognised
  364. -- Iteration 54: Windows-1252 --
  365. -- ASCII String --
  366. Encoding Windows-1252 recognised
  367. -- Multibyte String --
  368. Encoding Windows-1252 recognised
  369. -- Iteration 55: CP866 --
  370. -- ASCII String --
  371. Encoding CP866 recognised
  372. -- Multibyte String --
  373. Encoding CP866 recognised
  374. -- Iteration 56: KOI8-R --
  375. -- ASCII String --
  376. Encoding KOI8-R recognised
  377. -- Multibyte String --
  378. Encoding KOI8-R recognised
  379. Done