Forum Webscript.Ru

Программирование => Perl => Тема начата: agat от 24 Июля 2002, 20:53:57

Название: Как заменить значения в полученной строке?
Отправлено: agat от 24 Июля 2002, 20:53:57
title=$TITLE&url1=$URL&email2=$EMAIL - прочитанная из файла строка (каждый раз разная, с разным порядком следования и разными именами переменных)

$TITLE,$URL,$EMAIL,$DESC - постоянно существующие переменные (одинаковые в скрипте и полученной строке)

Как заменить значения переменным в полученной строке не зная порядка следования и имени переменной? Может какая фунция есть?

Если бы эта строка была в теле скрипта - тогда все сделается автоматом, всё просто. А как быть в такой ситуации?



Сергей.
Название: Как заменить значения в полученной строке?
Отправлено: Maniac от 25 Июля 2002, 11:51:37
А на какие значения ты собираешься менять? По какому критерию определяешь?
Название: Как заменить значения в полученной строке?
Отправлено: Evgeny от 25 Июля 2002, 12:15:36
$str=~s/a/b/ - замена в строке $str буквы а на b.
Ты не мог бы пример привести того, что тебе нужно?
Название: Как заменить значения в полученной строке?
Отправлено: agat от 25 Июля 2002, 12:52:06
В считанной строке (title=$TITLE&url1=$URL&email2=$EMAIL)нужно заменить символьные куски текста ($TITLE,$URL,$EMAIL) на значения одноименных переменных скрипта ($TITLE,$URL,$EMAIL).

Напомню, что порядок следования символьных переменных "$TITLE,$URL,$EMAIL" в считываемой строке может меняться.
Название: Как заменить значения в полученной строке?
Отправлено: YA от 25 Июля 2002, 18:10:38
Цитировать
Может какая фунция есть?


Учи регулярные выражения и не морочь людям голову.
Sorry, за грубость.
Название: Как заменить значения в полученной строке?
Отправлено: OBOLTUS от 25 Июля 2002, 19:42:23
делай себе ассоциативный массив вида:
array[\'title\'=>\'\', \'url\'=>\'\']
И ползуйся функциями - unserialize(), serialize(); Про нее можно в мануале прочесть. Она преобразует такой массив в строку. Обратная функция возвращает массив к жизни. Правда это в PHP:)))
Название: Как заменить значения в полученной строке?
Отправлено: Evgeny от 25 Июля 2002, 19:58:48

$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";
Название: Как заменить значения в полученной строке?
Отправлено: ю юю от 25 Июля 2002, 22:13:54
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
$str=\'"\'.$str.\'"\';
print "$str\\n";
  $TITLE="myTittle";
  $URL="myURL";
  $EMAIL="myEmail";
 
  $rez= eval $str;
  print $rez;

#Не делайте так !!!!
Название: Как заменить значения в полученной строке?
Отправлено: юю ю от 25 Июля 2002, 22:17:28
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
$str=\'"\'.$str.\'"\';
print "$str\\n";
  $TITLE="myTittle";
  $URL="myURL";
  $EMAIL="myEmail";
 
  $rez= eval $str;
  print $rez;

#Не делайте так !!!!
Название: Как заменить значения в полученной строке?
Отправлено: kak я от 25 Июля 2002, 22:48:29
$str=\'title=$TITLE&url1=$URL&email2=$EMAIL\';
print "$str\\n";
  $TITLE="myTittle";
  $URL="myURL";
  $EMAIL="myEmail";
 
  $str=~s/\\$(.*?)(&|$)/${$1}$2/g;
  print $str;
#ююю делайте так МОЖЕТ БЫТЬ :(