#6

Работая с большими строками русских символов, я решил использовать регулярные выражения для поиска нужных мне подстрок. Оказалось, что в php не всё так просто с этим.
Для поиска по регулярке и замены подстроки можно воспользоваться функциями preg_replace или preg_replace_callback.
Эти функции первым аргументом принимают регулярное выражение, например такое:
/http?\:\/\/(\w)+\.(\w){1,3}\/(\w)+/
Если прямо так запихнуть эту строку, то всё будет работать на латинском алфавите. Для того, чтобы искать русские буквы необходимо явно указывать промежутки. Например, такая регулярка должна искать хэштеги
/#([a-zA-Zа-яА-ЯёЁ_0-9])+/
Теоритически, она ищет русские и латинские символы, но вот при использовании в preg_replace_callback он нам нарисует такой вот символ � на месте первой руссой буквы и остановится.
Чтобы такого не было, надо банально приписать к концу регулярки символ u. Этот модификатор говорит, чтобы шаблоны обрабатывались как UTF-8 строки.
Вот пример рабочего кода

А вообще более подробно о существующих модификаторах можно почитать тут

Share
Send
2012   php