0

$_GET['url'] 変数を使用して URL からデータを取得しようとしています:

http://mysite.com/?url= http://this.is/?q=an&?example=url

私が上で望むものは太字ですが、悲しいことに $_GET['url'] は "http:// this.is/?q=an" しか得られません。 URL。

アンパサンドを無視して、スクリプトが必要な URL 全体を取得できるようにする方法はありますか? ?url= に追加された URL は、私の制限内で制御できないため、ほとんどの作業が行われますが、恐ろしい & が含まれているものもあります。スタックオーバーフローに関する質問を読んだ後、私はあまり希望を抱いていません:(

4

4 に答える 4

4

クエリ文字列に配置された引数をまったく制御できない場合 (何らかの理由で)、変数を手動で解析することによってこれを行うこともできます$_SERVER['QUERY_STRING']

$page = str_replace("url=", "", $_SERVER['QUERY_STRING']);

もちろん、可能であれば、他の人が投稿した回答を使用してエンコードする必要があります。

于 2013-02-19T14:29:27.520 に答える
1

使用するurlencode()

$get_url = urlencode('http://this.is/?q=an&?example=url');
$url = 'http://mysite.com/?url=' . $get_url;
于 2013-02-19T14:27:26.177 に答える
0

テストしたコードは次のとおりです。

if (!empty($_GET['url'])) {
    echo $_GET['url'].'<br />';
}
$url = urlencode('http://this.is/?q=an&?example=url');
echo '<a href="http://mysite.com/?url='.$url.'">LINK</a>';

それがあなたを助けることを願っています。

于 2013-02-19T14:52:24.567 に答える
0

クエリ文字列を制御できない場合は、使用できます

$query = $_SERVER['QUERY_STRING'];
$pos = strpos($query, "url=");
if ($pos !== false) {
    $url = substr($query, $pos + 4);
}

このコードは後にすべてを返しますurl=

可能であれば、URL を でエンコードしurlencodeて、クリーンな URL を作成する必要があります。これを行わないと、最終的にサーバーエラーが発生し、奇妙な URL が表示され、複数の URL を渡すことができなくなります (url= の後のすべてが URL として解釈されるため)。

于 2013-02-19T14:36:49.333 に答える