Сведения о вопросе

Henry

16:55, 2nd August, 2020

Zend_Filter_StringTrim некорректно работает с UTF-8?

Просмотров: 385   Ответов: 2

Обнаружилось, что фильтр для тримминга строк хотя и объявляет «Unicode aware trim method», но не такой уж он «aware trim». Если в него попадает строка, оканчивающаяся на кириллическую прописную «Р», она портится. Вероятно, оттого, что её представление в UTF-8 оканчивается на A0.



Конкретно проблема вылезает вот в этой регулярке:



preg_replace('/^[\s]*|[\s]*$/sSD', '', $value)



Если добавить модификатор u, результат — вообще NULL.



Никто с такой проблемой не сталкивался?



  Сведения об ответе

SEEYOU

00:06, 20th August, 2020

PHP 5.2.10, 5.3.3 — добавление флага u решает проблему. Относительно его отсутствия — имеет смысл написать баг-репорт.

Кстати, обычная родная PHP-функция trim() при использовании без второго аргумента (либо при отсутствии не-ASCII-символов в нём) вполне безопасна для UTF-8-строк.


  Сведения об ответе

lats

18:27, 12th August, 2020

Если добавить модификатор u, результат — вообще NULL.

только что проверил. с этим модификатором регулярка работает отлично. без него и правда наблюдается косяк с заглавной Р, а вот с ним все ок
версия php — 5.3.1


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться