簡體   English   中英

為Twitter共享URL編碼get_the_title()

[英]Encoding get_the_title() for Twitter share URL

我在推特上使用彈出窗口直接鏈接分享按鈕: <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"

有了所有瘋狂的社交媒體插件,這是我實現共享按鈕最簡單,最直接的方式。

但是,當標題中有&時,標題將破壞應該顯示狀態的文本。 我知道你需要urlencode()標題,但是當我這樣做時,它會在狀態消息中顯示特殊字符。

既然你現在不需要在Twitter中共享[space] + ,我需要用&amp;替換任何& 但是,它似乎不適用於str_replace() 它由於某些原因輸出HTML特殊字符。 做一些像<?php echo str_replace('&', '&amp;', urldecode(get_the_title())); ?> <?php echo str_replace('&', '&amp;', urldecode(get_the_title())); ?>也不起作用。

&在URL中具有特殊含義以分隔多個參數。 如果您的網址是...a&b... ,它不代表文字“a&b”,則代表兩個單獨的參數。 為了避免這種情況,需要urlencode文本,果然&%26

編碼& &amp; 只對必要的&在HTML字符,你不應該在你的文字,因為所有& S被替換%26

我不知道Wordpress的復雜性,但我認為get_the_title()返回一個已經HTML轉義的值。 意思是,它包含&amp; 而不是& ,所以如果你發送它就是發送給Twitter的價值。 你想要的是獲得沒有HTML實體的文本,即你需要對它進行HTML解碼才能轉向&amp; 回到實際值& 然后,HTML解碼的值需要進行URL編碼,因此不會搞砸您的URL語法。

總而言之,這應該是有希望的:

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

可能有其他方法可以直接從Wordpress獲取沒有HTML實體的原始標題,而無需進行復雜的html_entity_decode舞蹈,但同樣,我對Wordpress知之甚少。


PS:由於您要將該URL輸出到HTML上下文中,因此您應該再次對URL進行HTML編碼,以確保它不會破壞您的HTML語法。 這主要是為了學術完整性, urlencode() 不應該返回任何可能破壞HTML語法的東西。 但只是為了迂腐的完整性,這里:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM