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

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



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



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



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



Никто с такой проблемой не сталкивался?
  • Вопрос задан
  • 2804 просмотра
Пригласить эксперта
Ответы на вопрос 2
MTonly
@MTonly
Веб-разработчик с 2002 года
PHP 5.2.10, 5.3.3 — добавление флага u решает проблему. Относительно его отсутствия — имеет смысл написать баг-репорт.

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

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

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

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