Feb 04

…По моему никогда…

Написать пост меня вынудила офигенная вещь в пхп, связанная с regexp‘ами и юникодом.

Возьмем регексп “/[^[:alnum:]]/” (alnum - любая буква или цифра). Он значит буквально следующее: “всё, что не является буквой или цифрой“. Возьмем функцию preg_replace и попробуем из строки, содержащей русские буквы в юникоде удалить “всё, что не является буквой или цифрой“: preg_replace(”/[^[:alnum:]]/”, “”, $string).

По логике вещей - должно работать. С латинскими буквами действительно проблем не возникает. С русскими буквами, если они записаны в Win-1251 тоже… Но запустите у себя на сервере такой скрипт:

<?php
$string = "абвгдеёжзийклмонпрстуфхцчшщьыъэюя";
echo preg_replace("/[^[:alnum:]]/", "", $string);
?>

Причем файл, в котором будет это написано должен быть сохранен в UTF8.

PS. Напомню, что ДОЛЖЕН этот скрипт вывести строку без изменений.

written by FX Poster \\ tags: ,