Я знаю, что должен кодировать UUR для любого URL, переданного во что-либо еще, потому что я прочитал это: http://www.digitalbart.com/jquery-and-urlencode/
Я хочу поделиться текущим временем текущего трека, который я слушаю.Так что я установил превосходный укорочитель Yoururls.И у меня есть немного кода, который объединяет все биты и делает следующее: track = 2 & time = 967
Поскольку я не хочу, чтобы все видели мой закрытый ключ, у меня есть небольшой php-файл, который принимаетввод, и добавляет следующее, так это выглядит так: http://myshorten.example/yourls-api.php?signature=x&action=shorturl&format=simple&url=http://urltoshorten?track=2&time=967
Итак, на главной странице я вызываю jquery $("div.shorturl").load(loadall);
Затем он делает немногоCURL, а затем сокращатель возвращает хороший короткий URL.
Примерно так:
$myurl='http://myshorten.example/yourls-api.php?signature=x&action=shorturl&format=simple&url=' . $theurl;
$ch = curl_init($myurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
echo 'cURL failed';
exit;
}
echo $data;
Все идеально.
Кроме ... Сокращенный URL всегда находится вформа http://urltoshorten? track = 2 - что-нибудь после сокращения амперсанда.
Я попытался обернуть весь URL в URL-код php, я обернул дорожку = 2 & time = 967и в encodeURI, и в encodeURIComponent я попытался обернуть все это в один или оба.И все же, & ломает его, хотя я вижу, что представленный URL выглядит как track = 1% 26time% 3D5 в конце.
Если я вставлю эту или даже «простую» версию с не кодированным URLлибо в интерфейс yoururls, либо отправьте его через интерфейс API в виде обычного URL-адреса, вставленного в адресную строку браузера, опять же, он работает идеально.
Так что это не ваша ошибка, похоже,URL кодируется должным образом, единственное, что я могу вспомнить, это, возможно, CURL?
Теперь вы можете подумать: «Почему бы не заменить & на * и затем преобразовать его обратно?».Итак, когда URL расширен, я получаю значения из
var track = $.getUrlVar('track');
var time = $.getUrlVar('time');
, поэтому я МОГУ БЫТЬ потерять переменную времени, затем немного найти, где находится *, и затем предположить, что остальныечто-нибудь после * - это время, но это немного уродливо, и, главное, это не совсем правильный способ сделать что-либо.
Если кто-нибудь может мне помочь, это будет оценено.