со страницы руководства для mb_ereg_search_pos
:
Массив, включающий в себя положение совпадающей части для многобайтовой
регулярное выражение. Первый элемент массива будет
начало совпадающей части, второй элемент будет иметь длину ( байт )
согласованной части. Возвращает FALSE при ошибке.
Моя интерпретация заключается в том, что всегда возвращается количество байтов, а не фактическая позиция. Если вы проверите больше этих многобайтовых функций, есть хотя бы еще одна , которая намекает на то, что она должна работать таким образом. Тогда не спрашивайте меня, какова цель этой функции ...
Если вы хотите узнать только позицию первого C
, вы можете использовать mb_strpos
:
mb_strpos('καλημέραCCC', 'C'); // 8
Если вы хотите просто взломать его любой ценой, есть решение. Вы должны сначала декодировать строку:
mb_ereg_search_init(utf8_decode('καλημέραCCC'), 'C+');
Строка становится ????????CCC
, каждый из вопросительных знаков занимает ровно 1 байт, и вы можете правильно их подсчитать. Однако, если вы хотите использовать многобайтовый символ в регулярном выражении сейчас ('λ+'
), это не сработает.