2013-08-20 27 views
1

因此,我試圖使用twitter推文按鈕來推送來自網頁的帖子。我直接從Twitter使用股票標準代碼。將編碼文本字符串包含在Twitter分享按鈕中的問題

假設...

POST_TEXT =我們只有一個 「幾個大字」 在這裏解釋的事情

<a class="twittersocial" onClick="_gaq.push(['_trackEvent', 'Twitter', 'Share', '<?php echo get_permalink($post->ID)?>']); window.open('https://twitter.com/share?url=<?php echo urlencode(get_permalink($post->ID))?>&text=<?php echo urlencode(substr(get_field('post_text'),0,86))?>...&via=twitterhandle&hashtags=newpost','Ratting','width=550,height=400,0,status=0,scrollbars=1');"href="javascript:void(0);" name="Share a quote on Twitter" title="Share a quote on Twitter" ></a> 

結果在Twitter的彈出窗口:

我們&#039;只已經得到&quot;幾個字符&quot;在這裏解釋的東西... http://www.domain.com/newpost-x/ #newpost via @twitterhandle

確保帖子不被HTML字符標記污染的最佳解決方案是什麼?我正在尋找儘可能輕的解決方案,因爲我正在取代什麼是非常沉重的社交媒體插件。

回答

1

SOLUTION

檢查似乎'從get_field正在表示爲&#039;並隨後編碼爲%26%23039%3B(編碼兩次)

html_entity_decode被用來解碼&#039;'在編碼之前的編碼的URL字符串後它回到&#039;

substr(html_entity_decode(get_field('post_text'), ENT_QUOTES),0,156) 
0

strip_tags()怎麼樣?

substr(strip_tags(get_field('quote_text')), 0, 86) 

這將在執行子字符串之前刪除所有的html標記。

+0

我忘了包含反引號的內聯代碼。該帖子已被編輯以顯示實際結果。它是以下字符顯示不正確,我沒有成功與strip_tags的「<>& –

+0

你可以在你的問題精確地發佈'substr(get_field('quote_text'),0,86)'返回?把它放在一個代碼塊中,這樣markdown就不會弄亂它了 –

+0

我發現上面的編輯方案,這些字符在get_field編碼,然後用url_encode編碼。 –