Я получаю строку, как это:
result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD
Я использую этот код для кодирования URL:
curl_setopt($ch, CURLOPT_URL, "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
$raw = rawurldecode($output);
$pars = parse_url($raw);
parse_str($pars['query'],$result);
Я видел это с функцией parse_str()
Я не могу получить параметры раньше &url=
, Как я могу получить response=OK
? Мне нужно знать, может ли мой сайт продолжить работу.
Как кто-то спросил, это
var_dump($raw) -> string(112) "result=OK&token=330852&url=https://www.premiumline.eu/onshop/vas/login_mp?token=330852&acq=225583&track=12yy2333"
Спасибо, прежде чем!
Я видел это с функцией
parse_str()
Я не могу получить
параметры перед&url=
Не правда
Ты можешь использовать parse_str () проанализировать все параметры строки запроса, т.е.
$queryStr = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";
parse_str($queryStr);
echo $result;
echo $token;
echo $url;
Выход:
OK
ABCD
http://www.example.com/shopping/vas?token=ABCD
Кодировать вопросительный знак в %3F
,
В URL допускается только 1 вопросительный знак (это разделитель).
$the_url = urlencode($url);
$str = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";
$params = parse_str(urlencode($str));
$result = $params['result'];
Не видя точного значения $output
Я бы догадался, что это проблема
$raw = rawurldecode($output);
Здесь вы декодируете свою строку, преобразуя действительную строку запроса в недекодированную строку.
Как вы хотите проанализировать результат как строку запроса — используя parse_str()
— вы не должны сначала декодировать его, так как после декодирования он больше не содержит корректного ввода для parse_str()
,
PHP получает как QUERY_STRING, строку после последнего знака вопроса, так что у вас есть свой собственный? и один в параметре ‘url’, поэтому вы получаете только токен, и один!
сначала закодируйте это, чтобы избежать использования символов url в вашей строке
result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD
пример
$urlParam = "result=OK&token=ABCD&url=http://www.example.com/shopping/vas?token=ABCD";
$urlParamEncoded = urlencode($urlParam);
curl_setopt($ch, CURLOPT_URL, $urlParamEncoded);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
$raw = rawurldecode($output);
$pars = parse_url($raw);
parse_str($pars['query'],$result);
Тогда вы можете использовать urldecode
в вашем файле сценария назначения.