Forum Webscript.Ru

Программирование => Perl => Тема начата: C++ от 10 Апреля 2003, 10:35:38

Название: Поиск и замена
Отправлено: C++ от 10 Апреля 2003, 10:35:38
Есть текст, в котором я ищу подстроки (их много), есть список. Как наиболее быстро, заменить найденные подстроки на определенные элементы из списка, элементы определяются в зависимости от вида найденной подстроки.
Сам шаблон:m||
То что будет находится между :type=TYPE1¶m=1¶m=2¶m=3
type - один из двух списков,params - значение в списке.
Заранее благодарю!
Название: Поиск и замена
Отправлено: Chs от 10 Апреля 2003, 22:09:28
Ээээ....а для тупых пример можно?
Название: Поиск и замена
Отправлено: C++ от 10 Апреля 2003, 23:33:33
Не очень корректно вопрос поставил.....
Есть HTML, в нем содержится что-то на подобие SSI вставок.
Мне необходимо найти эти вставки, разобрать их содержимое и заменить на данные из списка, в зависимости от параметров.
Дело в том, что этих вставок может быть очень много + элементы списка не должны повторяться в HTML (после замены).
Например
  и т.д.
type - номер списка (1 или 2)
param1 - значение элемента[i][0]
param2 - значение элемента[i][1]
Вот в зависимости от значений param1 и param2 нужно в списке выбрать элемент (не вставленный выше в HTML)
Название: Поиск и замена
Отправлено: NCRangeR от 11 Апреля 2003, 06:36:25
если я правильно понял, количество param-ов фиксировано (а именно, их три - type, param и param1) для каждой вставки..

тогда что-то вроде
$c =~ s//Func($1,$2,$3)/ge;

ну а в функции Func определяется код вставки в зависимости от параметров..
Название: Поиск и замена
Отправлено: C++ от 11 Апреля 2003, 08:32:12
Цитировать

если я правильно понял, количество param-ов фиксировано (а именно, их три - type, param и param1) для каждой вставки..

Нет, количество параметров не фиксировано, их может быть от одного, до 6....
Название: Поиск и замена
Отправлено: NCRangeR от 11 Апреля 2003, 23:10:08
C++
тогда лучше так:
$c =~ s//Func($1,$2)/ge;
в функцию func таким образом передадутся номер type (т.е 1 или 2) и переменная-список $p="param=1¶m=2¶m=5..."

@params = split /&/, $p;

всё, есть список нужных параметров в виде
@params=("param=1", "param=2", "param=5")..