2010-06-28 2 views
13

Эй, скажем, у меня есть URL-адрес, который проходит через мой php, есть ли простой способ получить переменные GET, которые проходят через него? Это не настоящий URL-адрес страницы или что-то еще.Получите переменные GET из URL-строки String

вроде просто строку, содержащую

http://www.somesite.com/index.php?url=var&file_id=var&test=var

Что лучший способ, чтобы получить значения этих переменных?

+0

Возможный дубликат [Получение идентификатора из строки. Задача Regex.] (Http://stackoverflow.com/questions/3131288/getting-an-id-out-of-a-string-regex-problem) - см. Принятый ответ. – Gordon

ответ

39

parse_str(parse_url($url, PHP_URL_QUERY), $array) см manpage для parse_str для получения дополнительной информации.

+0

Ницца, изящное решение. –

+0

thaks, легко и точно !! – dav

+0

Люблю это! красиво и просто и прямо! спасибо cristis .. –

-1

Быстрый Google для "PHP ГЭТ" дает эту страницу из W3Schools:

http://www.w3schools.com/php/php_get.asp

+6

Он не спрашивает о получении параметров текущей страницы. Скорее, он хочет проанализировать строку запроса из некоторого произвольного URL-адреса, т. Е. Из некоторой строки. –

+0

Точно, спасибо Джордж –

+0

@ Аноним отправил то, что мне было нужно. Спасибо дружище. –

16
$href = 'http://www.somesite.com/index.php?url=var&file_id=var&test=var'; 

$url = parse_url($href); 
print_r($url); 
/* Array 
(
    [scheme] => http 
    [host] => www.somesite.com 
    [path] => /index.php 
    [query] => url=var&file_id=var&test=var 
) */ 

$query = array(); 
parse_str($url['query'], $query); 

print_r($query); 
/* Array 
(
    [url] => var 
    [file_id] => var 
    [test] => var 
) */ 
+0

Кажется не работает, если у вас есть CSS вместо PHP-файла. Возможно, что-то не так. –

+0

php-код никогда не работает в css-файлах (если вы не зарегистрировали файлы css для приложения/x-httpd-php или их эквивалент в конфигурации вашего сервера, которые, вероятно, вам не нужны. – Kris

+0

Да, я понимаю. У меня есть файл CSS, связанный с 'style.css? V = 12345', v - номер версии, чтобы принудительно обновить сторону браузера кеша. Я хотел бы удалить или извлечь параметр. хочу теперь –

0

Я хотел бы использовать что-то вроде:

preg_match_all('/(\?|&)([^=]+=[^&]*)/', $string , $matches); 

затем

print_r($matches[2]); 
/* 
Array 
(
    [0] => url=var 
    [1] => file_id=var 
    [2] => test=var 
) 
*/ 

Надеется, что это работает 4 и.

4

На самом деле это намного проще, чем писать любые пользовательские функции.

$ queryStr = $ _SERVER ['QUERY_STRING'];

+0

, который принимает как get, так и post vars, правильно? В этом случае вы можете получить гораздо больше аргументов, чем просто получить vars из URL. Если вы вместо этого используете REDIRECT_QUERY_STRING, вы получите только аргументы из URL. – Tillebeck

Смежные вопросы