@VampiRUS

Странное поведение strlen в PHP, какие есть идеи что может быть причиной?

Имеется код
$paymentSystem      = $payment->getPaySystem();
var_dump(strlen("\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"));
$paymentSystem->initiatePay($payment, $context->getRequest());
var_dump(strlen("\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"));

в initiatePay первой строкой так же определяется количество байт в строке
результат
int(8)
int(4)
int(8)
initiatePay - это уже в код битрикса
на результат strlen может повлиять mbstring.overload, других идей нет.
В "правильной" конфигурации сервера всё работает как и ожидается. Но возможна ли такая конфигурация, что mbstring.overload будет влияет не на весь код?
куда можно было бы копнуть для поиска проблемы?
Версия PHP/7.3.18
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Для определения длины строки нужно использовать mb_strlen. В Битриксе раньше требовали включать mbstrng.fund_overload.
Но почему функция может работать одним образом в методе и другим снаружи не могу придумать. Скорее всего, вы код сильно упростили и потеряли какие-то важные детали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы