Консультация № 140428
21.07.2008, 18:11
0.00 руб.
0 1 1
Добрый день!
Этот код удаляет с переменной list все цыфры, английские символы, знаки препинания, оставляя только пробелы и русские символы. Но код исполняется очень долго. Чем его можно заменить, более быстрым?

Приложение:
$list=eregi_replace("[a-z0-9]|s|[[:space:]]|[[:cntrl:]]|[[:punct:]]"," ",$list);

Обсуждение

Неизвестный
22.07.2008, 09:28
общий
это ответ
Здравствуйте, Райкин Сергей Александрович!

Функцию eregi_replace имеет смысл использовать, если важно использование регулярных выражений (т.е. имеется некий шаблон для текста, возможны повторения искомых последовательностей и т.д.). Для поиска/удаления отдельных символов лучше использовать обычную строковую замену:
$arr = array("a", "b", "c", "d",...,"1","2"..); // можно заполнить в цикле по номерам в ASCII-Таблице, с помощью функции chr
$list = str_ireplace($arr, '', $list);

функция str_ireplace() регистронезависима, но может отсутствовать в Вашей сборке php. В таком случае придется использовать str_replace().
Если перечень знаков препинания неизвестен, можно после прохода по строке str_ireplace() использовать eregi_replace('[:punct:]','',$list).
Форма ответа