3

クエリ文字列に「&」演算子を渡したい。urlencodeとurldecodeを使用しようとしましたが、機能しません。私はこれをやっています:

$abc="A & B";
$abc2=urlencode($abc);

次に、このような値を渡します

<a href="hello.php?say=<?php echo $abc2 ?>"><?php echo $abc;?></a>

次のページで次のように値を取得します

$abc=$_GET['say'];
$abcd=urldecode($abc');
echo $abcd;

しかし、出力はA & B

私は何が間違っているのですか?

4

4 に答える 4

2

これを試して:

$url = '?' . http_build_query(array(
  'say' => 'A & B'
));

// Then just:
echo $_GET['say'];

実際の例: http://codepad.viper-7.com/ibH79a?say=A+%26+B

于 2012-04-19T06:31:15.217 に答える
2

基本的には動作するはずです。Webサーバーで次のことを試しました。

$a = 'A & B';
echo urlencode($a);
echo '<br />';
echo urldecode(urlencode($a));

出力

A+%26+B
A & B

& が正しくデコードされない別の論理エラーまたは構文エラーがあると思います。コードの urldecode() 構文にアポストロフィがあります。

それがすべてのコードですか、それとも「類似の」コードを使用していますか? その場合、元のコードが役立ちます。

于 2012-04-19T06:31:43.200 に答える
0

以下のコードの 2 行目の $abc の横に一重引用符を追加したようです。

$abc = $_GET['say'];
$abcd = urldecode($abc);
echo $abcd;
于 2012-04-19T06:41:25.930 に答える
-1

& は HTML の特殊文字です。に変換する必要があります&amp;

これを試して:

$abc = "A & B";
<a href="hello.php?say=<?php echo htmlentities($abc); ?>"><?php echo $abc; ?></a>
于 2012-04-19T06:53:31.250 に答える