К списку форумов К списку вопросов
простой вопрос по php
Серый ёжЬ
15.03.2004 - 09:16
Недавно начал изучать это язык, поэтому вопрос ну уж совсем простой: Как из $QUERY_STRING извлечь все пары типа "переменная=значение", массив что ли какой-то?
DIVЕR
1 - 15.03.2004 - 10:12
В этой переменной передаются GET-переменные. Если опция register_globals включена, то можешь просто обращаться к переменным и получать их значения.
Например, адрес www/?var1=value1&var2=value2
даст тебе переменные $var1 = "value1" и $var2 = "value2".
.
Если же эта опция выключена, то тебе всегда доступен массив $_GET, где и содержатся все эти "пары". Его-то можешь вообще исследовать весь, например, так:
foreach ( $_GET as $key => $value ) {
 //1. Преобразовать всё в нормальные переменные
 $$key = $value;
 
 //2. Или же выполнить какое-либо действие с каждой переменной
 someaction( $key, $value );
}
Zeratul
2 - 15.03.2004 - 10:12
Вопрос: тебе нужны переменные для использования в самом скрипте или же тебе нужны просто строки вида "переменная=значение"?
Серый ёжЬ
3 - 15.03.2004 - 10:27
для использования в скрипте, при работе с БД, к примеру, название категории и порядковый номер записи
Mips
4 - 15.03.2004 - 15:34
не надо изобретать велочипед.
parse_url()
Серый ёжЬ
5 - 15.03.2004 - 15:53
совет DIVER'а помог, спасибо
buster
6 - 15.03.2004 - 16:34
А про массив $HTTP_GET_VARS забыли? В принципе, если наперёд известны имена передаваемых переменных, то можно сразу использовать их имена, например:
http://......?cathegory=5&position=168
в скрипте будут присутствовать переменные $cathegory и $position. Хотя лучше к ним обращаться через $HTTP_POST_VARS['cathegory'] и $HTTP_POST_VARS['position'] на всякий случай :) хотя в QUERY_STRING не обязательно ИМХО.
DIVЕR
7 - 15.03.2004 - 16:42
Хотя иногда бывает глюк - ключ первого элемента массива выглядит не как "var1" (в моём примере выше), а по-моему как, допустим, index.php?var1
 
Т.е. искажается и всё тут. Я заметил это и локально (Apache/XP/mod_php), и пару раз у хостера (Apache/Linux/mod_php). И, кстати, встретилось это и у одного моего знакомого на совершенно другом хостере...
 
Пришлось решать в лоб:
if ( $_GET && (eregi(".+\?(.*)$", key($_GET), $regs)) )
  $_GET[ $regs[1] ] = $_GET[ $regs[0] ];
DIVЕR
8 - 15.03.2004 - 16:44
buster, а я же сказал с самого начала про массив $_GET (возможно, и не явно =), надо было не только написать "пары", но и расшифровать как ты)
buster
9 - 15.03.2004 - 17:38
Извини, если чего не так сказал, хотел лишь дополнить, чтобы человек не заморачивался с этими "парами", а просто использовал сразу эти переменные. Ведь на то в РНР и введена эта возможность. :о))
Делаем одно общее дело :о))

К списку вопросов на форуме Веб-дизайн

>>