0

私はphpサイト(まだプロトタイプです)を作成し、そこにDiggボタンを配置しました。簡単でしたが...

公式マニュアルには、「URLをエンコードする必要があります」と書かれています。私はurlencode()でそれをしました。urlencodeの後、私のURLは次のようになります。

http%3A%2F%2Fwww.mysite.com%2Fen%2Fredirect.php%3Fl%3Dhttp%3A%2F%2Fwww.othersite.rs%2FNews%2FWorld%2F227040%2FRusia-Airplane-crashed%26N%3DRusia%3A+Airplane+crashed

これまでのところ問題ありませんが、そのURLをDiggに送信すると、無効なURLとして認識されます。

http://www.mysite.com/en/redirect.php?l=http://www.othersite.rs/News/World/227040/Rusia-Airplane-crashed&N=Rusia:+Airplane crashed

「飛行機」と「クラッシュ」の間に「+」を置くと(リンクの最後に)、Diggは問題なくそれを認識します!

助けてください、この奇妙な問題は私の脳細胞を殺しています!

PSこの回答の目的で、元のサイトには英語以外のサイトが含まれているため、URLが(存在しないものに)変更されています。

4

1 に答える 1

0

編集したらurlencode()、結果のプラス記号もエンコードします。

$encoded_url = urlencode($original_url);
$final_url = str_replace('+', '%2B', $encoded_url);

+または、URLのスペースを最初に置き換え、次にurlencode()結果を置き換えることもできます。

$spaceless_url = str_replace(' ', '+', $original_url);
$final_url = urlencode($spaceless_url);

自分のサイトでクエリ文字列のパラメータを最初にエンコードする必要がある場合は、問題は発生しません(元のURLにエンコードされていないスペースがないため)。

于 2011-01-01T14:39:36.037 に答える