3

したがって、アドレスバーから次のようなURLを取得しようとしています。

http://mysite.com/url.php?name=http://test.com/format.jsp?id=738ths3&secure=false

$ _GET変数を使用して、URLからすぐに読み取ります。コードは次のとおりです。

$arc = rawurlencode($_GET['name']);
echo "URL: $arc";

これは戻るだけです

URL: http://imgur.com/format.jsp?id=738ths3

&secure=falseがありません

私が見たいもの:

 URL: http://test.com/format.jsp?id=738ths3&secure=false

私はurlencode、rawurlencodeを無駄に試しました、私はグーグルで多くのフォーラムとstackoverflowを調べましたが、答えの助けはありません、何かアイデアはありますか?ありがとう!

urlencodeはこれを示しています:

URL:http%3A%2F%2Ftest.com

だから私もそれを持つことはできません!

4

3 に答える 3

10

urlencode()URLを作成する前に、次のことを行う必要があります。

$url = "http://mysite.com/url.php?name=".urlencode('http://test.com/format.jsp?id=738ths3&secure=false');

nameこのようにして、からGETパラメータとして完全なURLを取得できます$_GET['name']

説明:

URLを作成するときにそれがないurlencode()と、PHPは次のよ​​うに区切られた2つの別個のパラメーターとして扱われます&

  1. $_GET['name']
    これはhttp://imgur.com/format.jsp?id=738ths3あなたの場合です

  2. $_GET['secure']
    これはfalseあなたの場合です

または:

あなたのコメントから、あなたはURL構築を制御できないようです。$_GET次を使用して、単一の文字列で完全を取得できますhttp_build_query

$name = http_build_query($_GET);

次に、以下を取得します。

echo $name; // name=http://test.com/format.jsp?id=738ths3&secure=false

// which you would then may want to strip away the first 'name='
$name = substr($name, strlen('name='));

echo $name; // to obtain http://test.com/format.jsp?id=738ths3&secure=false
于 2012-07-28T04:40:29.850 に答える
1

元のURL、、にはhttp://mysite.com/url.php?name=http://test.com/format.jsp?id=738ths3&secure=false、2つのクエリ文字列パラメータが含まれています:namesecure。クエリ文字列のは、パラメータのURLではなく、完全な&URLに属します。name

この値を制御できる場合は、リンク/ URLを宣言するときに、PHPを使用して次のurlencode()ようなフルネームの値をエンコードします。

$url = "http://mysite.com/url.php?name=" . urlencode("=http://test.com/format.jsp?id=738ths3&secure=false");

nameこれにより、パラメータが適切にエンコードさ$arc = $_GET['name'];れ、希望どおりに機能します。

値の設定を制御できず、受信しているものを解析しているだけの場合は、name=パラメーターで指定された文字列を分割し、その一部の後に他のすべてを想定できますname

$splitQuery = split('name=', $_SERVER['REQUEST_URI']);
$arc = $splitQuery[1];

urldecode()エンコードされたURLにアクセスした後、エンコードされたURLをデコードするには、PHPの:を使用します。

$arc = urldecode($_GET['name']); // assuming you're properly encoding the `name` parameter
于 2012-07-28T04:44:23.893 に答える
0

URLをエンコードできない場合は、次のコードで現在のURIを取得できます。

$url = $_SERVER["REQUEST_URI"];

あなたの場合、$urlは次のとおりです。

/url.php?name=http://test.com/format.jsp?id=738ths3&secure=false

次に、それをexplodeで分割して検証し、そこからGETパラメータを取得できます。

于 2012-07-28T04:51:17.623 に答える