我正在编写一个网站,其中包含使用 www.twitter.com/share 功能的自定义推文按钮,但我遇到的问题是在推文文本中包含哈希'#'字符
例如:
http://www.twitter.com/share?url=www.example.com&text=I+am+eating+#branstonpickel+right+now
推文文本以'我正在吃'的形式出现,并省略了哈希以及之后的所有内容。
我在Twitter论坛上快速浏览并了解到散列'#'字符不能成为共享网址的一部分。
在https://dev.twitter.com/discussions/512#comment-877上有人说:
哈希是URL中的特殊字符(它们标识文档片段),因此它们以及随后的任何内容都不会被发送到服务器。
和
你需要URLEncode它,所以使用%23
当我在测试链接中尝试第二点时:
www.twitter.com/share?url=www.example.com&text=I+am+eating+%23branstonpickel+right+now
推文文字是'我现在正在吃%23branstonpickel '字面上包含%23而不是将其转换为哈希值。
对于这个有问题的问题感到抱歉,但是有谁知道这是我做错了什么? 任何反馈将不胜感激:)
答案 0 :(得分:71)
看起来这是基本设置:
https://twitter.com/intent/tweet?
url=<url to tweet>
text=<text to tweet>
hashtags=<comma separated list of hashtags, with no # on them>
这会预先建立一条推文:<text> <url> <hashtags>
hashtags参数曾经存在错误......它只显示了第一个n-1个标签。目前这是固定的。
答案 1 :(得分:51)
您可以在网址中使用%23而不是哈希(#),例如
http://www.twitter.com/share?url=www.example.com&text=I+am+eating+%23branston+%23pickel+right+now
答案 2 :(得分:3)
我可能错了,但我认为主题标签必须作为一个单独的变量传递,它将出现在你的推文末尾,即:
将导致“我现在正在吃Branston pickel #branstonpickle”
另外,我认为pickel应该是泡菜!
干杯
托比
答案 3 :(得分:2)
如果您正在使用PHP,则可以使用以下内容:
<?php echo 'http://www.twitter.com/share?' . http_build_query(array(
'url' => 'http://www.example.com',
'text' => 'I am eating #branstonpickel right now'
)); ?>
这将为您完成所有网址编码,并且易于阅读。
有关http_build_query的更多信息,请参阅PHP手册: http://us2.php.net/http_build_query
答案 4 :(得分:1)
使用encodeURIComponent对url进行编码
答案 5 :(得分:0)
对于包含line jump
,#
,@
和特殊unicode的网址,以下内容有效:
var lineJump = encodeURI(String.fromCharCode(10)),
hash = "%23", arobase="%40",
tweetText = 'https://twitter.com/intent/tweet?text=Le signe chinois '+hans+' '+item.pinyin+': '+item.definition.replace(";",",")+'.'
+lineJump+'Merci '+arobase+'Inalco_Officiel '+arobase+'CRIparis ❤️ '
+lineJump+hash+'Chinois '+hash+'MOOC'
+lineJump+'https://hanzi.cri-paris.org/',
tweetTxtUrlEncoded = tweetText+ "" +encodeURIComponent('#'+lesson+encodeURIComponent(hans));
答案 6 :(得分:0)
urlencode
https://twitter.com/intent/tweet?text=<?= urlencode("I am eating #branstonpickel right now"); ?>"