私はこれを読んでいるので、他のものに渡されたURLをencodeURIする必要があることを知っています: 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 を少し実行してから、shorter が適切な短い 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全体をphpのURLencodeでラップしようとしました.track=2&time=967をencodeURIとencodeURIComponentの両方でラップしました.全体を一方または両方でラップしようとしました. それでも、送信された URL が最後に track=1%26time%3D5 のように見えることはわかりますが、& はそれを壊します。
これまたはエンコードされていない URL を含む「プレーン」バージョンを yoururls インターフェイスに貼り付けるか、API を介して通常の URL として yoururls に送信し、ブラウザーのロケーション バーに貼り付けると、再び完全に機能します。
したがって、あなたのURLに問題があるわけではありません。URLが適切にエンコードされているようです。私が考えることができる唯一のことは、おそらくCURLですか?
この時点で、「& を * に置き換えてから、もう一度変換してみませんか?」と考えているかもしれません。OK、URLが展開されると、値を取得します
var track = $.getUrlVar('track');
var time = $.getUrlVar('time');
だから私は時間変数を失うことができます、それから * がどこにあるかを少し見つけて、* の後の残りのすべてが時間であると仮定しますが、それは少し醜いです。正しいやり方。
誰かが私を助けることができれば、それはありがたいです。