<?php
$original_multibyte_string = 'țată în HERE';
$a_non_multibyte_str_same_length = '123456789HERE';
// HERE is on 10th (9th element) character
echo 'strpos finds HERE at: '.strpos($original_multibyte_string,'HERE').' '.'strpos finds HERE at: '.strpos($a_non_multibyte_str_same_length,'HERE');
// OUTPUTS: strpos finds HERE at: 12 mb_strpos finds HERE at: 9
echo "\n";
// now lets test the multibyte:
echo 'mb_strpos finds HERE at: '.mb_strpos($original_multibyte_string,'HERE','UTF-8').' '.'mb_strpos finds HERE at: '.mb_strpos($a_non_multibyte_str_same_length,'HERE','UTF-8');
strpos finds HERE at: 12 strpos finds HERE at: 9
Fatal error: Uncaught TypeError: mb_strpos(): Argument #3 ($offset) must be of type int, string given in /in/Pu9rE:12
Stack trace:
#0 /in/Pu9rE(12): mb_strpos('\xC8\x9Bat\xC4\x83 \xC3\xAEn HER...', 'HERE', 'UTF-8')
#1 {main}
thrown in /in/Pu9rE on line 12
Process exited with code 255.
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
strpos finds HERE at: 12 strpos finds HERE at: 9
Warning: mb_strpos() expects parameter 3 to be int, string given in /in/Pu9rE on line 12
Warning: mb_strpos() expects parameter 3 to be int, string given in /in/Pu9rE on line 12
mb_strpos finds HERE at: mb_strpos finds HERE at:
strpos finds HERE at: 12 strpos finds HERE at: 9
Warning: mb_strpos() expects parameter 3 to be integer, string given in /in/Pu9rE on line 12
Warning: mb_strpos() expects parameter 3 to be integer, string given in /in/Pu9rE on line 12
mb_strpos finds HERE at: mb_strpos finds HERE at:
strpos finds HERE at: 12 strpos finds HERE at: 9
Warning: mb_strpos() expects parameter 3 to be long, string given in /in/Pu9rE on line 12
Warning: mb_strpos() expects parameter 3 to be long, string given in /in/Pu9rE on line 12
mb_strpos finds HERE at: mb_strpos finds HERE at:
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9
strpos finds HERE at: 12 strpos finds HERE at: 9
mb_strpos finds HERE at: 12 mb_strpos finds HERE at: 9