2012-05-27 3 views
10

:そこにすべての狂気のソーシャルメディアプラグインで <a href="https://twitter.com/intent/tweet?url=<?php echo urlencode(get_permalink());?>&amp;text=<?php echo get_the_title(); ?>&amp;via=username" target="_blank"エンコーディングget_the_title()私は、Twitter上の共有ボタンのポップアップとの直接のリンクを使用しています

、これは最も単純で最も直接的です共有ボタンを実装する方法を教えてください。しかし

、タイトルに&あり、ステータスを表示するようになっているテキストを中断しますタイトル。私はあなたがurlencode()のタイトルが必要だと理解しますが、それを行うと、ステータスメッセージに特殊文字が表示されます。

あなたは今Twitterで共有に[space]ため+を必要としないので、私は&amp;で任意の&年代を交換する必要があります。しかし、それはstr_replace()で動作していないようです。何らかの理由でHTMLの特殊文字を出力します。 <?php echo str_replace('&', '&amp;', urldecode(get_the_title())); ?>のようなものは動作しません。

+0

「私はそれをすると、ステータスメッセージに特殊文字を表示しますか?出力している最終的なHTMLは何ですか?それはTwitter上でどのように表示されますか? – deceze

+0

特殊文字を実際のステータスメッセージに出力します。 https://twitter.com/intent/tweet?url=http%3A%2F%2Fgoogle.com&text=%26%238216%3BMr.+Blah+%26%23038%3B+Mrsのように表示されます。 。+ Blah&via = username – AAA

答えて

41

&は、いくつかのパラメータを分離するためのURLで特別な意味を持っています。 URLが...a&b...の場合、 "a & b"というテキストは表示されません。それを避けるために、あなたは%26&を回すテキストを、urlencodeする必要があります。すべて& sは%26によって置き換えられているので、&amp;

エンコーディング&は、あなたのテキストを持っているべきではないHTMLで&文字、ためにのみ必要です。

Wordpressの複雑さは分かりませんが、get_the_title()はすでにHTMLでエスケープされている値を返します。それはあなたがちょうどそのようにそれを送信した場合のTwitterに送信される値ですので意味、それは、代わりに&&amp;が含まれています。何が欲しいのはあなたは、HTMLデコードに戻ってそれを実際の値&&amp;を有効にする必要があり、すなわち、HTMLエンティティせずにテキストを取得することです。 HTMLでデコードされた値は、URLエンコードされている必要があります。

すべて一緒にそれを置く、これがうまくいけば、それを実行する必要があります。

echo urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8')); 

再び他の複雑なhtml_entity_decodeダンスを行うために必要とせずに、直接のWordpressからHTML実体なしのオリジナルタイトルを取得する方法が、あるかもしれません、私はWordpressについてよく知らない。


PS:あなたはHTMLコンテキストにそのURLを出力しているので、あなたが HTMLは、それはあなたのHTML構文を壊さないことを確認するために、再度URLをエンコードする必要があります。それはしかし、urlencode() HTML構文を破ることができる何かを返すべきではない学術ほとんど一貫性のためです。しかし、ちょうど完ぺきのために、

echo htmlspecialchars(urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8')), ENT_COMPAT, 'UTF-8'); 
+0

これは私が最初にエンコードした理由ですが、問題は、テキスト全体をエンコードすると、特殊なHTML文字が実際のステータスで表示されることです。例えばここを参照してください:https://twitter.com/intent/tweet?url=http%3A%2F%2Fgoogle.com&text=%26%238216%3BMr.+Blah+%26%23038%3B+Mrs.+Blah&via=ユーザー名 – AAA

+0

URLに特殊なHTML文字があるのはなぜですか?繰り返しますが、出力されている実際のHTMLは何ですか? – deceze

+0

私は 'text = get_the_title()'で何かをTweetできるように 'get_the_title()'を使っています。投稿のタイトルには、時には ''や '&'がありますが、これは珍しいことではありません。出力されている実際のHTMLは 'get_the_title()'でエンコードされていますが、前にも述べたように、Twitterはステータスに特殊文字を出力しています。私はこの問題を探知し、明らかに既知の問題であるため、誰も明確な解決策を持っていないようだ。 ^出力されている実際のHTMLを示しました。 – AAA

関連する問題