1 мая 2010 г.

preg_replace и utf-8

Обнаружил на странице тегов баг такого рода: русская буква "К" заменялась на квадрат и пробел. Оказалось, что глючит preg_replace после перевода на кодировку utf-8.

Помогло добавление модификатора "u" в паттерн регулярного выражения:

preg_replace("/\s+/u", $space, $text);

P.S.: По той же причине глючило и отображение "Обсуждений" на главной странице сайта. Причем тут уже глючила функция PHP по выделению подстроки substr. Почитал про ее мультибайтовый аналог mb_substr, но почему-то нормально и он не заработал. В итоге забил на это обрезание вообще, пока выводятся названия постов с форума полностью.