web-dev-qa-db-ja.com

URLにパーセント記号(%)を渡し、PHPを使用して正確な値を取得します

私は次のようなURLのパーセント(%)サインを渡そうとしています

%B6011000995504101^SB

しかし、私がエコーすると、それは戻ります

♦011000995504101^SB

URLに渡すのとまったく同じ値が必要です。

Urlencode()関数を使用しようとしましたが、次のような出力が得られます...

%B6011000995504101%5ESB

これに関して私を助けてください

26
Sumit Bijvani

回答:

URLで%サインインを送信するには、代わりに%25を送信します。

あなたの場合、PHPでパーセント記号を表示するには、文字列%25B6011000995504101^SBをサーバーに渡す必要があります。

なぜ:

URLでは、パーセント記号には特別な意味があります。特殊文字をエンコードするために使用されます。たとえば、&はパラメータ間のセパレータです。したがって、パラメータを実際に含む an &にしたい場合は、代わりに%26と記述します。パーセント記号は特殊文字のエンコードに使用されるため、also特殊文字であり、実際にパーセント記号を送信する場合はエンコードする必要があります。パーセント記号のエンコードは%25です。

60
IanPudney

URLに生の文字列を含める前に、次のようにurlencodeを介して渡すことをお勧めします。

<?php
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"some_page.php?$updated\">Link here</a>";
?>

受信ページは何をすべきかを知っています-この例をウェブサーバーで試してください:

<?php

if($_GET['argument']) {
    echo "<p>You passed in the argument &quot;$_GET[argument]&quot;</p>";
}else {
    echo "<p>No argument was passed.</p>";
}
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"urlencode.php?argument=$updated\">Link here</a>";
?>

(ファイルに名前を付けますrlencode.php

3