Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена слов по шаблону из ассоциативного массива 
:(
    Опции темы
EGD
Дата 11.4.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



Нужно заменить слова заключенные в символы %. Строка на замену берется из ассоциативного массива. Что я делают не так? smile 
Код

$format =~ s/^.*%($allow_meta)%.*$/$player_meta{$1}/g


Это сообщение отредактировал(а) EGD - 11.4.2011, 22:04
PM   Вверх
Jimy
Дата 11.4.2011, 22:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: нет
Всего: 3



^.* и .*$ - лишнее
что содержится в $allow_meta?

PM   Вверх
EGD
Дата 12.4.2011, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



список слов которые нужно заменить через or, например:
album|title|genre
PM   Вверх
alezzz
Дата 12.4.2011, 13:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Код

$format =~ s/%($allow_meta)%/$player_meta{$1}/g


Удалите лишнее из регулярки как советует Jimy, у Вас вся строка заменяется на последнее найденое между %%
PM MAIL   Вверх
EGD
Дата 12.4.2011, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



получаем пустую строку.
реально ли так сделать:
1. найти %слово%
2. слово - ключ в хеш-массиве
3. заменить слово на значение из хеш-массива по данному ключу
?

Это сообщение отредактировал(а) EGD - 12.4.2011, 13:58
PM   Вверх
alezzz
Дата 12.4.2011, 14:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Цитата(EGD @  12.4.2011,  13:53 Найти цитируемый пост)
получаем пустую строку.

незнаю, должно работать.
Код

$allow_meta = 'aaa|bbb|ccc';
%player_meta = ('aaa' => '111', 'bbb' => '222', 'ccc' => '333');
$format = "___%aaa%___bbb___%ccc%___";
$format =~ s/%($allow_meta)%/$player_meta{$1}/g;
print $format;

вывод:
Цитата

___111___bbb___333___


Это сообщение отредактировал(а) alezzz - 12.4.2011, 15:01
PM MAIL   Вверх
EGD
Дата 12.4.2011, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



странно... после копипаста вашего примера и подгона под свою задачу все заработало.
Спасибо.
вот она, великая и могучая сила перл и регулярных выражений.

/me где-то протупил


Это сообщение отредактировал(а) EGD - 12.4.2011, 15:45
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.