отбросить лишние символы

moggucci

Guest
отбросить лишние символы

Подскажите, как отбросить все лишние символы из строки, оставив только [0..9], [a-z], [A-Z], [а-я], [А-Я] и пробел (тире, двоеточия и все прочие символы мне нужно отбросить). Зачем? Преобразовать строку поиска, отбросив все лишнее.
Насколько я понял, нет такой функции. Алгоритмически знаю как написать (цикл от 0 до длины строки1, если символ в допустимом множестве, то строка2 = строка2 + этот символ), вопрос только в кодировках - будет ли с ними засада.
 

Sokil.Dmytro

Новичок
$str="sdfkl sdfks валп валп 349839 ,./';: sd fsd fsd";
echo preg_replace('/[^0-9a-zA-Z а-яА-Я]/', '', $str);
 

moggucci

Guest
Спасибо. Работает. :)
Еще вопросик в догонку. После "очищения" вышеописанной регуляркой строку поиска хочу преобразовать в lower case (в нижний регистр обязательно нужно, ищу не в mysql). strtolower дает половинчатый результат - заглавные русские буквы не преобразовываются. Писать свою функцию?

-~{}~ 21.06.07 22:39:

Поиск рулит,
PHP:
$locales   = array("ru_RU.CP1251", "ru_RU.cp1251", "ru_RU", "RU"); 
$localeSet = false; 
foreach ($locales as $localeName) { 
    if ((bool)$localeSet === false) { 
        // setting up locase 
        setlocale(LC_ALL, $localeName); 
    }
-~{}~ 21.06.07 22:39:

Все заработало.
 
Сверху