Forum Webscript.Ru

Программирование => PHP => Тема начата: от 14 Января 2002, 19:13:31

Название: 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
Название: PHP ХЕЛП
Отправлено: Britva от 14 Января 2002, 19:23:10
вроде так

$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&...)
Название: PHP ХЕЛП
Отправлено: от 14 Января 2002, 19:36:58
А если кроме массива передаются ещё какие-нить данные?
Название: PHP ХЕЛП
Отправлено: Britva от 14 Января 2002, 19:45:14
если передается не массив, то он просто будет из одного эл-та.
Название: PHP ХЕЛП
Отправлено: от 14 Января 2002, 20:05:02
Не знаю с чего ты это решил но всё равно спасибо за помошь
вот какой выход я нашел
while(list($key,$val) = each($temparray)) {
   list($tempname, $tempval) = explode("=", $val);
   if($tempname=="answer"){$answer[$i]=urldecode($tempval);++$i;}
#   print "$tempname ravno $tempval
";
}
Если не использовать $i в массив ничего не пихается :)

Блин однако в перле это проще реализовывается :)
Название: PHP ХЕЛП
Отправлено: Britva от 14 Января 2002, 20:17:29
все пихается, там специально $$ используется, т.е. записывается в переменную с именем, к-рое лежит в $tempname
Цитировать
Если не использовать $i в массив ничего не пихается  

такого не может быть. если url был такой:
...script.php?name=1&name=2&other=3
то будут следующие переменные: $name[0], $name[1], $other[0]

а почему не подходят обычные средства php, т.е. что в переменных то лежит?
Название: PHP ХЕЛП
Отправлено: от 15 Января 2002, 01:21:28
Ок....
Тут у меня беда небольшая ещё возникла:
$nechto-массив может иметь вид "1" а может "1:::2"
":::"  - разделитель
требо запхнуть все данные из $nechto уже разбив их в какой-либо другой массив
Название: PHP ХЕЛП
Отправлено: от 15 Января 2002, 04:02:59
Всё, решил проблему
Название: PHP ХЕЛП
Отправлено: от 15 Января 2002, 04:03:48
Теперь речь илдёт о регулярных выражениях как  сделать замену переменной если первые её 7 символов такие: "http://"
??????
Название: И ещё вопрос туда же :)
Отправлено: от 15 Января 2002, 05:36:11
Существует ли оператор как в перле join?