Как проверить, есть ли в URL параметр внутри? - PullRequest
1 голос
/ 06 октября 2010

При использовании PHP мне нужно проверить, есть ли у URL, к которому я добавляю информацию, параметр или нет.

Так что, если URL-адрес

http://test.com/url?a=1

Мне нужно добавить & b = 2, т.е.

http://test.com/url?a=1&b=2

Однако, если URL был

http://test.com/url

Мне нужно добавить

http://test.com/url?b=2

Можно ли проверить это в PHP? В итоге мне нужно прикрепить параметр b = 2, используя правильный символ-разделитель («?», Если в существующей ссылке его нет, или «&», если в существующей ссылке уже есть «?»).

Ответы [ 3 ]

3 голосов
/ 06 октября 2010

Не проверять, а собирать новый
использовать массив $ _GET и функцию http_build_query ()

1 голос
/ 06 октября 2010

Вы можете использовать parse_url().Затем используйте parse_str(), чтобы получить части запроса, измените массив и используйте http_build_query (), чтобы воссоздать строку запроса.

0 голосов
/ 06 октября 2010

С помощью этой функции вы можете вызвать set('b', 2) или установить несколько значений одновременно с помощью set(array('a' => 1, 'b' => 2, 'c' => 3)).

function set($name, $value='', $vars='') {
    if (!$vars) $vars = $_SERVER['QUERY_STRING'];
    parse_str($vars, $a);
    if (!is_array($name)) $name = array($name => $value);
    foreach ($name as $k => $v) {
        $a[$k] = $v;
        if ($v === '') unset($a[$k]);
    }
    $q = '';
    foreach ($a as $k => $v) $q .= ($q ? '&' : '') . $k . '=' . $v;
    return $q ? '?' . $q : '';
}
...