0

スペースを含む URL があり、#その中にエスケープしURI::Escapeて次のように取得します。

https://copy.com/1rsdM7TvVcLfGebc/name%20with%20space%20and%20%23%20in%20it.jpg ?

注: 上記をコピーした元のページでは、リンクをクリックしても機能しません。そのページの HTML がここに表示されます。

<a href=3D"https://copy.com/1rsdM7TvVcLfGebc/name%20with%20space%20and%20%23=
%20in%20it.jpg?source=3Dbsf" style=3D"color: white; font-weight: =
bold;">name with space and # in it.jpg</a>

ご覧のとおり、 %23#として正しくエンコードされています。問題は、リンクをクリックすると、ブラウザーがそれを%23として保持せずにエンコードして、リンク先に移動できないことです。これは、リンクがブラウザでどのように見えるかです。スペースが%20としてもレンダリングされていないことがわかります。他のブラウザでは動作が異なり、どれも機能しません。##

https://www.copy.com/s/1rsdM7TvVcLfGebc/name%20with%20space%20and%20# in it.jpg

#ブラウザで手動で%23に置き換えてEnter キーを押すと、正しくページに移動します。

何が起きてる?

4

2 に答える 2

0

自動 URL エンコーディングに依存しないでください。URL を使用する必要があるたびに、URL を強制的にエンコード/デコードすることができます。

この目的のために、uri_escape() および uri_unescape() 関数を使用できます。

于 2013-04-17T05:32:12.567 に答える