Вопрос № 140428: Добрый день! Этот код удаляет с переменной list все цыфры, английские символы, знаки препинания, оставляя только пробелы и русские символы. Но код исполняется очень долго. Чем его можно заменить, более быстрым?...
Вопрос № 140.428
Добрый день! Этот код удаляет с переменной list все цыфры, английские символы, знаки препинания, оставляя только пробелы и русские символы. Но код исполняется очень долго. Чем его можно заменить, более быстрым?
Отвечает: Иван Сергеевич
Здравствуйте, Райкин Сергей Александрович!
Функцию 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).
Ответ отправил: Иван Сергеевич (статус: Студент)
Ответ отправлен: 22.07.2008, 09:28 Оценка за ответ: 5