2012-01-04 21 views
2

私はtwitterカスタム共有ボタン「自分のtweetボタンを作成する」(https://dev.twitter.com/docs/tweet-button)を使用しています。 ドキュメントでは、パラメータを渡すためにクエリパラメータを使用する必要があると書かれています。Twitter共有 - urlencodeパラメータ%2Cを%252Cにリダイレクト

問題:私はそれにURLエンコードされた文字列を渡すと、間違ってテキストparamをエンコードしています。ツイートメッセージにカンマ(、)が%252Cとして表示されます。他の文字もエンコードされています。

私はPHP url encode(http://php.net/manual/en/function.urlencode.php)を使用して呼び出しの文字列を準備します。

$text = urlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps"); 

その後、私はTwitterのリンクを構築:

'http://www.twitter.com/share?url='.urlencode($projectUrl).'&via='.$via.'&text='.$text.'&related='.$user->getTwitterProfileName() 

最終TwitterのURL呼び出しは次のとおりです。

http://www.twitter.com/share?url=http%3A%2F%2Flocalhost%2Fapp%2Fbig-top-ballet&via=appbackr&text=I+just+backed+Big+Top+Ballet%2C+an+amazing+new+mobile+app%2C+on+appbackr%2C+where+anyone+can+back+mobile+apps&related=philippberner 

とすぐにページがブラウザ(ChromeとFirefoxの)で開くとさえずりURLを次のURLにリダイレクトします。

https://twitter.com/intent/tweet?related=philippberner&text=I+just+backed+Big+Top+Ballet%252C+an+amazing+new+mobile+app%252C+on+appbackr%252C+where+anyone+can+back+mobile+apps&url=http%253A%252F%252Flocalhost%252Fapp%252Fbig-top-ballet&via=appbackr 

このつぶやきボックスに次のメッセージが表示されます。

を私だけの裏付けビッグトップ・バレエ%2C誰が@appbackr

経由でモバイルアプリケーションをバックアップすることができますappbackr%の2Cに驚くような新しいモバイルアプリの%2Cとを

トップ+バレエ%2C + an +驚異のトップ+バレエ%252C + an +驚異のに変換します。ツイッターURLで%252Cを%2Cに手動で変更すると、カンマが正しく表示されます。

答えて

2

実際には、URLエンコーディングとは何の関係もありません。

実際にはurlencode、rawurlencode、またはURLエンコードなしで動作します 新しいタブを開くときに、次のURLを試してみてください。 URLENCODEで

http://twitter.com/share?url=http%3A%2F%2Fwww.appbackr.com%2Fapp%2Fglass-ceiling&via=appbackr&text=I+just+backed+Glass+Ceiling%2C+an+amazing+new+mobile+app%2C+on+appbackr%2C+where+anyone+can+back+mobile+apps&related= rawurlEncode

http://twitter.com/share?url=http%3A%2F%2Fwww.appbackr.com%2Fapp%2Fglass-ceiling&via=appbackr&text=I%20just%20backed%20Glass%20Ceiling%2C%20an%20amazing%20new%20mobile%20app%2C%20on%20appbackr%2C%20where%20anyone%20can%20back%20mobile%20apps&related= URLENCODEなし

http://twitter.com/share?url=http%3A%2F%2Fwww.appbackr.com%2Fapp%2Fglass-ceiling&via=appbackr&text=Iだけで裏打ちされたガラスの天井、驚くような新しいモバイルアプリ、誰もがモバイルアプリケーションをバックアップすることができappbackr、上&関連=

実際には、twitter.com ins www.twitter.comのティード。なぜ違いがあるのか​​分かりませんし、twitterのドキュメントやGoogleの検索結果にはどこにも記載されていないようです。公正であるが、Twitter's documentationはwww.twitter.comではなくtwitter.comを指していた。

いつものように、URLエンコーディングがなくても常にテキストをurlencodeするのは間違いなくベストプラクティスです。

0

用途:

$text = rawurlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps"); 

次に、このURLを使用します 'https://twitter.com/intent/tweet?url='.urlencode($projectUrl') を& via = '。$ via。' & text = '。$ text。' & related = '。$ user-> getTwitterProfileName()

+0

私はrawurlencodeを使って、URLの空白も取得します。私は前にそれを試みた。私が理解している違いは、空間の符号化にあります。彼らは問題を引き起こしていません。それからtwitterメッセージは次のようになります:I%20%20%20%20%20%20%20%20%20%20%20%20%%20%%20%20%%20%%20%20%20%20%20%%20%%20%%20apps via @appbackr – philipp

+0

これは、URL「http://www.twitter.com/share」を「https://twitter.com/intent/」にリダイレクトすると、GETデータを再度エンコードするTwitter APIのURL書き換えエラーです。つぶやき "この最後のURLを使用します。また、urlencodeの代わりにrawurlencodeを使用する必要があります。 – Darm

関連する問題