iconv_strpos_variation5.phpt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. --TEST--
  2. Test iconv_strpos() function : usage variations - Pass different integers as $offset argument
  3. --EXTENSIONS--
  4. iconv
  5. --INI--
  6. error_reporting=E_ALL & ~E_DEPRECATED
  7. --FILE--
  8. <?php
  9. /*
  10. * Test how iconv_strpos() behaves when passed different integers as $offset argument
  11. * The character length of $string_ascii and $string_mb is the same,
  12. * and the needle appears at the same positions in both strings
  13. */
  14. iconv_set_encoding("internal_encoding", "UTF-8");
  15. echo "*** Testing iconv_strpos() : usage variations ***\n";
  16. $string_ascii = '+Is an English string'; //21 chars
  17. $needle_ascii = 'g';
  18. $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); //21 chars
  19. $needle_mb = base64_decode('44CC');
  20. /*
  21. * Loop through integers as multiples of ten for $offset argument
  22. * 60 is larger than *BYTE* count for $string_mb
  23. */
  24. for ($i = -30; $i <= 60; $i += 10) {
  25. echo "\n**-- Offset is: $i --**\n";
  26. echo "-- ASCII String --\n";
  27. try {
  28. var_dump(iconv_strpos($string_ascii, $needle_ascii, $i));
  29. } catch (ValueError $e) {
  30. echo $e->getMessage(), "\n";
  31. }
  32. echo "--Multibyte String --\n";
  33. try {
  34. var_dump(iconv_strpos($string_mb, $needle_mb, $i, 'UTF-8'));
  35. } catch (ValueError $e) {
  36. echo $e->getMessage(), "\n";
  37. }
  38. }
  39. echo "Done";
  40. ?>
  41. --EXPECT--
  42. *** Testing iconv_strpos() : usage variations ***
  43. **-- Offset is: -30 --**
  44. -- ASCII String --
  45. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  46. --Multibyte String --
  47. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  48. **-- Offset is: -20 --**
  49. -- ASCII String --
  50. int(9)
  51. --Multibyte String --
  52. int(9)
  53. **-- Offset is: -10 --**
  54. -- ASCII String --
  55. int(20)
  56. --Multibyte String --
  57. int(20)
  58. **-- Offset is: 0 --**
  59. -- ASCII String --
  60. int(9)
  61. --Multibyte String --
  62. int(9)
  63. **-- Offset is: 10 --**
  64. -- ASCII String --
  65. int(20)
  66. --Multibyte String --
  67. int(20)
  68. **-- Offset is: 20 --**
  69. -- ASCII String --
  70. int(20)
  71. --Multibyte String --
  72. int(20)
  73. **-- Offset is: 30 --**
  74. -- ASCII String --
  75. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  76. --Multibyte String --
  77. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  78. **-- Offset is: 40 --**
  79. -- ASCII String --
  80. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  81. --Multibyte String --
  82. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  83. **-- Offset is: 50 --**
  84. -- ASCII String --
  85. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  86. --Multibyte String --
  87. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  88. **-- Offset is: 60 --**
  89. -- ASCII String --
  90. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  91. --Multibyte String --
  92. iconv_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)
  93. Done