Как исключить из строки небуквы (символы, не являющиеся буквами) с помощью ereg?

jadio

Новичок
Как исключить из строки небуквы (символы, не являющиеся буквами) с помощью ereg?

Здравствуйте.
Возникла такая задача. Через PHP загружается mp3-файл на сервер и этому файлу планируется давать имя, ичходя из ID3-тегов (artist_-_song.mp3). Всё было бы хорошо, если бы в тегах не встречались "опасные" символы, вроде слэшей, которые файловая система не позволяет использовать в имени файла.

Соответственно, возник следующий вопрос:

Есть строка $string. Требуется её преобразовать так, чтобы в ней остались ТОЛЬКО буквы латинского алфавита, цифры, знаки "-", ".", "_".

Хотелось бы решить проблему с помощью ereg_replace, но с регулярными выражениями я не знаком. Помогите, пожалуйста.

Спасибо за внимание.
 

Dreammaker

***=Ф=***
$string=preg_replace('~[^a-z0-9\-\.\,\_]~i','',$string);

Можно так. Вместо ereg лучше preg_*

update: исправил.. не поставил ^
 

jadio

Новичок
Большое Вам спасибо. А не посоветуете почитать что-нибудь для новичка по регулярным выражениям?
 

Dreammaker

***=Ф=***
Фанат, я в курсе что не нужны. Просто привычка старая осталась экранировать все небуквенно-цифровые символы. Нужно будет как-то избавиться от неё.. :)
 

Dreammaker

***=Ф=***
>\w
>Любой символ, образующий "слово"

>word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl.
(с) мануал

То есть, будут пропущены запятая, точка и дефис.. их нужно добавить.
 
Сверху