powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переменная в шаблоне поиска
5 сообщений из 5, страница 1 из 1
Переменная в шаблоне поиска
    #32305211
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно заменить значения из списка "a" соответствующими значениями из списка "b". В списке "a" могут быть любые значения, в том числе и содержащие специальные символы.

[SRC]
@a = split /,/,'$0),$1),$2)';
@b = split /,/,'f0,f1,f2' ;

$ta = '$0)bla-bla-bla-bla-bla-bla-bla-$0)';

# Это не работает
for ($i=0;$i<$a;$i++) {
$ta=~s/@a[$i]/@b[$i]/ig;
}
print $ta;
...
Рейтинг: 0 / 0
Переменная в шаблоне поиска
    #32305345
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
символы скобок и знак доллара в решулярных выражениях имеют особый смысл. Поэтому в твоей их надо экранировать. Ну и с массивом ты неправильно работаешь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
@a = split /,/,'\$0\),\$1\),\$2\)'; 
@b = split /,/,'f0,f1,f2'; 

$ta = '$0)bla-bla-bla-bla-bla-bla-bla-$0)'; 

# Это работает :)
for ($i= 0 ;$i<$#a;$i++) { 
$ta=~s/$a[$i]/$b[$i]/ig; 
} 
print $ta;
...
Рейтинг: 0 / 0
Переменная в шаблоне поиска
    #32305441
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, про цикл, я просто описался при переписке реального кода
Про специальные выражения я в курсе.
Я не могу менять значения в строке а, они приходят из файла.

Сейчас выкрутился так. Но мне это не нравится. :(
Пока могут присутствовать только $ и ), но кто знает, что будет дальше…
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$a = '$0),$1),$>:<';
$a=~s'\$'\$'gi;
$a=~s'\)'\)'gi;

@a = split /,/,$a;
@b = split /,/,'f0,f1,f2';

$ta = '$0)$>:<bla-bla-bla-$1)bla-bla-bla-bla-$0)    @a[$i]';

for ($i= 0 ;$i<=$#a;$i++) {
$ta=~s(@a[$i])(@b[$i])ig;
}
print $ta;
...
Рейтинг: 0 / 0
Переменная в шаблоне поиска
    #32305969
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот так :
Код: plaintext
$ta=~s/\Q$a[$i]\E/$b[$i]/ig; 

или так
Код: plaintext
1.
$a[$i] = quotemeta($a[$i]);
$ta=~s/$a[$i]/$b[$i]/ig; 
...
Рейтинг: 0 / 0
Переменная в шаблоне поиска
    #32306795
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Вариант с quotemeta сработал.
На вариант с \Q … \E – ругается – ошибка синтаксиса.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переменная в шаблоне поиска
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]