質問

/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 ではどの関数を使用する必要がありますか?

役に立ちましたか?

解決

最初の質問についてですが、それは次の違いです。 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

を押すと 入力 キー、自動的に変換されます

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

あなたのやり方でうまくいくなら (そして、Firebug でエンコードされた URL が表示されているので、おそらく機能していると思われます), 大丈夫です ;-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top