Я хочу заменить все не алфавитно-цифровые символы: [^ a-zA-Z0-9] на '_'.
Я прочитал в php.net, что ereg_replace устарело.Это почему?Есть ли хороший Perl-справочник по регулярным выражениям?
Как мне добиться этого с помощью функции preg_replace?
Для замены с использованием шаблона регулярных выражений вы должны использовать preg_filter, preg_replace или preg_replace_callback. Вот ссылки на руководства с примерами кода.
http://php.net/manual/en/function.preg-filter.php
http://php.net/manual/en/function.preg-replace.php
http://php.net/manual/en/function.preg-replace-callback.php
Вы можете использовать preg_replace вместо.
preg_replace
Попробуйте preg_replace('/\W/', '', $subject) для замены всех несловарных символов внутри $ subject.
preg_replace('/\W/', '', $subject)