Получите количество многобайтовых символов перед сопоставлением с помощью preg_match() (параметр PREG_OFFSET_CAPTURE бесPhp

Кемеровские программисты php общаются здесь
Anonymous
Получите количество многобайтовых символов перед сопоставлением с помощью preg_match() (параметр PREG_OFFSET_CAPTURE бес

Сообщение Anonymous »

Я пытаюсь найти строку в кодировке UTF8 с помощью preg_match.

Код: Выделить всё

preg_match('/H/u', "\xC2\xA1Hola!", $a_matches, PREG_OFFSET_CAPTURE);
echo $a_matches[0][1];
Это должно вывести 1, поскольку «H» находится под индексом 1 в строке «¡Hola!». Но он печатает 2. Похоже, что он не рассматривает объект как строку в кодировке UTF8, хотя я передаю модификатор «u» в регулярном выражении.
У меня есть следующие настройки в моем php.ini и другие функции UTF8 работают:

Код: Выделить всё

mbstring.func_overload = 7
mbstring.language = Neutral
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/172 ... set-captur

Вернуться в «Php»