1

/controller/action/var1/value1/var2/value2 のような Zend Framework URI があります。

  1. Value2 にはスペース文字が含まれています。PHPでどのようにエンコードする必要がありますか? value2 で urlencode を使用すると、スペースが「%20f」ではなく「+」に変換されます。それは大丈夫ですか?

  2. この value2 は、クライアント側の JavaScript によって href の場所にも追加されます。そこでエスケープ機能を使用していますが、リンクをクリックすると、Firefox のアドレス バーに「+」も「%20f」も表示されません。firebug の「ネット」タブで見ると、%20f が表示されます。

PHP と JavaScript ではどの関数を使用すればよいですか?

4

1 に答える 1

2

urlencode最初の質問について、それはとの違いrawurlencodeです:

var_dump(urlencode("hello, world"));

あなたを得るでしょう:

string 'hello%2C+world' (length=14)

その間

var_dump(rawurlencode("hello, world"));

あなたを取得します:

string 'hello%2C%20world' (length=16)

どちらも問題ないと思います。念のため、お気軽に試してみてください ;-)


2 番目のポイントについて: Firefox は URL を「きれいに」しようとします。エンコードではなく、人間が読める方法で URL を表示します。これは開発者にとっては悪いことですが、エンドユーザーにとっては良いことです。

たとえば、Firefox のアドレス バーに次の URL を入力すると、次のようになります。

http://tests/temp/temp.php?a=hello%2C%20world

キーを押すと、enter自動的に翻訳されます

http://tests/temp/temp.php?a=hello%2C%20world

あなたがやっているように動作する場合(そして、Firebug でエンコードされた URL が表示されているので、おそらく動作している)、すべて問題ありません;-)

于 2009-12-24T15:14:24.727 に答える