2016-08-11 19 views
0

У меня есть этот URL:PHP: Получить параметр из закодированного URL

/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211 

Как GET site_id из этого URL?

+1

Что вы подразумеваете под "have этот url "? У вас есть этот текст в строковой переменной или это URL-адрес, используемый для доступа к вашему скрипту PHP? – melpomene

ответ

-1

Если вы знаете, что ваш URL, всегда будет в этой структуре, вы можете разобрать его с RegEx так:

$url = '/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211'; 
preg_match('/site_id\%3D(\d+)/', $url, $matches); 
$siteId = $matches[1]; 

Он ищет что-нибудь, что соответствует site_id%3D и числовое значение, которое следует, что ,

+1

$ url = $ _SERVER ["HTTP_HOST"]. $ _SERVER [ "REQUEST_URI"]; работает, спасибо! – Shin

+0

Это довольно ужасный код. '\%' избыточно, потому что '%' не является метасимволом регулярного выражения. Он возвращает неверную строку, если другой параметр запроса заканчивается символом 'xyz_size_id' (или если путь содержит' site_id = '). Он также предполагает, что site_id состоит только из цифр и что ни одна из цифр не кодируется по URL-адресу. – melpomene

0

Попробуйте parse_str и parse_url на $_GET['goto'].

parse_str(parse_url($_GET['goto'], PHP_URL_QUERY), $params); 
$site_id = $params['site_id']; 
+0

Мне очень хотелось бы знать, почему этот ответ был опущен. – melpomene

+0

Возможно, потому, что я неверно понял, что у него есть только строка запроса внутри $ _GET ['goto'], поэтому я забыл добавить parse_url к ней, чтобы извлечь только строку запроса. (Исправлено) – Naomi

-1

с помощью $ _GET [ 'Гото'] вы получите следующие URL:

/r/account/index.cfm?site_id=87211 

Попробуйте эту

$uri = $_GET['goto']; 
    $site = explode("=", $uri); 
    echo $site[1]; 
1

Установите этот флажок путь,

<?php 
    $abc ="/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211"; 

    $test = parse_url($abc); 
    $test = urldecode($test["query"]); 

    $url = parse_url($test);  
    parse_str($url['query'], $param); 
    print_r($param["site_id"]); 

    ?> 

Проверьте выход здесь : https://eval.in/621360

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