[help] Обработка строки несколькими регулярными выражениями

Статус
В этой теме нельзя размещать новые ответы.

HatoL

Профессор
Регистрация
5 Фев 2008
Сообщения
206
Реакции
36
Пишу скрипт для обработки текста для последующего его вывода на печать (из текста удаляются все ссылки и т.п.). Мне надо использовать несколько различных регулярных выражений с различной заменой. Хочется написать функцию, которую можно будет использовать примерно так:
PHP:
regexp_replace(array(

'/<a href=.*>/i' => ''

))
Каким образом можно обратиться не к значениям самого массива, а к его названиям? Или как можно по-другому реализовать эту задачу (использование нескольких регов к одной строке) ?
 
1. банальный forech с выбором ключей.

2. Получить ключи можно при помощи array_keys(), а далее их уже обрабатывать в цикле.
 
Перерабатывай логику программы с целью отказаться или сделать минимум регулярных выражений, ибо большое их количество это неоправданные тормоза. Многие регулярки можно заменить строковыми функциями.

Теги убить можно функцией striptags или если считывать по строкам - fgetss.
 
strip_tags и fgetss убьют все тэги, а поскольку текст готовится для печати, это не совсем разумно.
По поводу регэкспов полностью солидарен.
 
Ммм, preg_replace поддерживает в качестве агрументов массивы вообщем-то.
Просто надо сделать два массива - один с поиском, а другой с заменой.
 
Передавай в preg_replace 2 массива:

If replacement is a string and the pattern parameter is an array, all patterns will be replaced by that string. If both pattern and replacement parameters are arrays, each pattern will be replaced by the replacement counterpart. If there are fewer elements in the replacement array than in the pattern array, any extra pattern s will be replaced by an empty string.
(Для просмотра ссылки Войди или Зарегистрируйся)
 
С учетом последних двух постов, написал для себя функцию, которую хотел. Ничего в ней такого инновационного нет, но на всякий кому надо, вот:
PHP:
function preg_replaces ($subject, $array)
{
	$patterns = array_keys ($array);
	$replacements = array_values ($array);
	return preg_replace ($patterns, $replacements, $subject);
}
Использование простое. В качестве $subject указываем строку, над которой производим операцию, в качестве $array - массив, ключами которого являются регулярные выражения, а соответствующие им значения - заменяющие строки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху