2011-01-01 2 views
0

私はPHPサイトを作成しました(これはまだプロトタイプです)、その上にDiggボタンを配置しました。それは簡単でしたが...DiggボタンはエンコードされたURLを拒否します

公式マニュアルによれば、「URLはコード化されている必要があります。私はurlencode()でそれをしました。

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 

はこれまでのところ、それは良いことだが、私はDiggのにそのURLを提出したい場合、それは無効なURLとして認識されています:

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

私が置いた場合でurlencodeした後、私のURLは次のようになります"飛行機"と "クラッシュ"(リンクの最後にある)の間に "+"があれば、Diggは問題なく認識します!

この奇妙な問題が私の脳細胞を殺しているのを助けてください!

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

+0

'+'はスペースの 'urlencode'です – ajreal

答えて

0

あなたはurlencode()が同様に結果のプラス記号をエンコードし、それを編した後:

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

またはその代わりに、あなたはurlencode()+最初に、そしてその結果を使用してURLにスペースを置き換えることができます

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

+0

それはトリックをしません!興味深いのは、もし私が "死んでしまう"($ link) "それはうまく見える(+"の代わりに+)。しかし、diggページでは最初の ""の代わりに+だけで解釈されます! "&N = Rusia:+ Airplane crashed"の部分を見てください。私がURLの "N"パラメータを省略すると、うまくいきますが、 "N"を持っていなければなりません! – guest86

+0

'%2B'でなければなりません。' + 'ではなく、スペースではありません。 – Amber

+0

OMG!わかった! "N"引数から英語以外の文字を削除しても大丈夫です!非英語のラテン文字でテキストを適切に "urlencode"する方法はありますか? – guest86

関連する問題