![]() |
![]() |
Серый ёжЬ 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 |
Извини, если чего не так сказал, хотел лишь дополнить, чтобы человек не заморачивался с этими "парами", а просто использовал сразу эти переменные. Ведь на то в РНР и введена эта возможность. :о)) Делаем одно общее дело :о)) |