ereg_replace, запись в файл и кодировка

PH
На сайте с 16.05.2009
Offline
11
679

Здраствуйте!

Есть код, нужно принять даные из формы и записать в файл. Кодировка ЮТФ-8

При использовании

$str = ereg_replace("[^a-zA-Zа-яА-Я0-9_\.-]", "", "$str");

Руские символы превращаются в кракозябры, пробовал использовать iconv, не помагает

Ище вопрос про рег выражения, если мне нужно все вырезать кроме a-zA-Zа-яА-Я0-9 и символов

/ * ( ) - + _ . @ ! ?
, символы нужно вписывать в скобки после
a-zA-Zа-яА-Я0-9 - [^a-zA-Zа-яА-Я0-9/*()-+_.@!?]
или как?, и еще перед какими символами ставить обратный слеш ?
Dreammaker
На сайте с 20.04.2006
Offline
569
#1

$str = preg_replace("~[^a-zа-я0-9\/\*\(\)\-\+\_\.\@\!\?]~ui", "", $str);

попробуйте так.

слешей можно и меньше, но разницы особой нет :)

p.s. Хотя точно не помню, возможно слеши и не нужны, если символы используются внутри квадратных скобок.

PH
На сайте с 16.05.2009
Offline
11
#2
Dreammaker:
$str = preg_replace("~[^a-zа-я0-9\/\*\(\)\-\+\_\.\@\!\?]~ui", "", $str);
попробуйте так.

слешей можно и меньше, но разницы особой нет :)

p.s. Хотя точно не помню, возможно слеши и не нужны, если символы используются внутри квадратных скобок.

Спасибо! Работает

Можно подробней, что означает ~ и ~ui, и какие отличия между ereg и preg

Dreammaker
На сайте с 20.04.2006
Offline
569
#3

PurpleHill, в принципе всё можно почитать в мануале, но если вкратце, то ereg считается устаревшей формой, preg - это перл-совместимые. u - модификатор, который показывает, что нужно работать с utf-8, i - модификатор указывающий, что нужно работать без учёта регистра.

p.s. "~" - это знак, который "обрамляет" паттерн для регулярки, может быть любым символом, я этот использую.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий