Forum Webscript.Ru
Программирование => Perl => Тема начата: agat от 24 Июля 2002, 20:53:57
-
title=$TITLE&url1=$URL&email2=$EMAIL - прочитанная из файла строка (каждый раз разная, с разным порядком следования и разными именами переменных)
$TITLE,$URL,$EMAIL,$DESC - постоянно существующие переменные (одинаковые в скрипте и полученной строке)
Как заменить значения переменным в полученной строке не зная порядка следования и имени переменной? Может какая фунция есть?
Если бы эта строка была в теле скрипта - тогда все сделается автоматом, всё просто. А как быть в такой ситуации?
Сергей.
-
А на какие значения ты собираешься менять? По какому критерию определяешь?
-
$str=~s/a/b/ - замена в строке $str буквы а на b.
Ты не мог бы пример привести того, что тебе нужно?
-
В считанной строке (title=$TITLE&url1=$URL&email2=$EMAIL)нужно заменить символьные куски текста ($TITLE,$URL,$EMAIL) на значения одноименных переменных скрипта ($TITLE,$URL,$EMAIL).
Напомню, что порядок следования символьных переменных "$TITLE,$URL,$EMAIL" в считываемой строке может меняться.
-
Может какая фунция есть?
Учи регулярные выражения и не морочь людям голову.
Sorry, за грубость.
-
делай себе ассоциативный массив вида:
array[\'title\'=>\'\', \'url\'=>\'\']
И ползуйся функциями - unserialize(), serialize(); Про нее можно в мануале прочесть. Она преобразует такой массив в строку. Обратная функция возвращает массив к жизни. Правда это в PHP:)))
-
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
print "$str\\n";
$TITLE="myTittle";
$URL="myURL";
$EMAIL="myEmail";
foreach(TITLE,URL,EMAIL)
{ $str=~s/\\$$_/${$_}/;
}
print "$str\\n";
-
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
$str=\'"\'.$str.\'"\';
print "$str\\n";
$TITLE="myTittle";
$URL="myURL";
$EMAIL="myEmail";
$rez= eval $str;
print $rez;
#Не делайте так !!!!
-
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
$str=\'"\'.$str.\'"\';
print "$str\\n";
$TITLE="myTittle";
$URL="myURL";
$EMAIL="myEmail";
$rez= eval $str;
print $rez;
#Не делайте так !!!!
-
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
print "$str\\n";
$TITLE="myTittle";
$URL="myURL";
$EMAIL="myEmail";
$str=~s/\\$(.*?)(&|$)/${$1}$2/g;
print $str;
#ююю делайте так МОЖЕТ БЫТЬ :(