Forum Webscript.Ru
Программирование => PHP => Тема начата: от 14 Января 2002, 19:13:31
-
Люди вот решил свою скриптину переписать из перла на пхп и возникла одна проблема:
неважно каким методом но скрипту поступают данные в виде
"somescpit.cgi?name=vasya&name=kolya&name=petr " и т.д.
в перле получить все эти данные елементарно:
if ($ENV{\'REQUEST_METHOD\'} eq \'GET\'){$query=$ENV{\'QUERY_STRING\'};}
if ($ENV{\'REQUEST_METHOD\'} eq \'POST\'){sysread(STDIN,$query,$ENV{\'CONTENT_LENGTH\'});$method="post";}
@formfields=split(/&/,$query);
foreach(@formfields){
if(/^name=(.*)/){push(@name,&urldecode($1))};
}
А как это реализовать на пхп понятия не имею, если не сложно кто знает ответ на данную загадку киньте плиз на мыло kex_net@mail.ru или по аське 89344507
-
вроде так
$temparray = explode("&", $QUERY_STRING);
while(list(, $val) = each($array)) {
list($tempname, $tempval) = explode("=", $val);
$$tempname[] = urldecode($tempval);
}
?>
а вообще-то, например select, передает уже сразу массив в скрипт (а если будет get-метод, тогда урл будет такой ....script.php?name[]=jksdfh&name[]=sdfsdg&...)
-
А если кроме массива передаются ещё какие-нить данные?
-
если передается не массив, то он просто будет из одного эл-та.
-
Не знаю с чего ты это решил но всё равно спасибо за помошь
вот какой выход я нашел
while(list($key,$val) = each($temparray)) {
list($tempname, $tempval) = explode("=", $val);
if($tempname=="answer"){$answer[$i]=urldecode($tempval);++$i;}
# print "$tempname ravno $tempval
";
}
Если не использовать $i в массив ничего не пихается :)
Блин однако в перле это проще реализовывается :)
-
все пихается, там специально $$ используется, т.е. записывается в переменную с именем, к-рое лежит в $tempname
Если не использовать $i в массив ничего не пихается
такого не может быть. если url был такой:
...script.php?name=1&name=2&other=3
то будут следующие переменные: $name[0], $name[1], $other[0]
а почему не подходят обычные средства php, т.е. что в переменных то лежит?
-
Ок....
Тут у меня беда небольшая ещё возникла:
$nechto-массив может иметь вид "1" а может "1:::2"
":::" - разделитель
требо запхнуть все данные из $nechto уже разбив их в какой-либо другой массив
-
Всё, решил проблему
-
Теперь речь илдёт о регулярных выражениях как сделать замену переменной если первые её 7 символов такие: "http://"
??????
-
Существует ли оператор как в перле join?