Encoding get_the_title() for Twitter share URL
我在Twitter上使用带有链接的共享按钮的弹出式直接链接:
&text=&via=username" target="_blank"
有了所有疯狂的社交媒体插件,这是我实现共享按钮的最简单,最直接的方法。
但是,标题中有&时,标题将破坏本应显示为状态的文本。 我知道您需要urlencode()标题,但是当我这样做时,它会在状态消息中显示特殊字符。
由于您现在在Twitter共享中不需要+作为[space],因此我需要将所有&替换为&。 但是,它似乎不适用于str_replace()。 由于某些原因,它输出HTML特殊字符。 做类似的操作也不起作用。
-
您的意思是"但是当我这样做时,它会在状态消息中显示特殊字符"? 您要输出的最终HTML是什么,它如何显示在Twitter上?
-
它将特殊字符输出到实际状态消息中。 因此,您可以在此处查看例如:twitter.com/intent/
&在URL中具有特殊含义,用于分隔多个参数。如果您的URL是...a&b...,则不表示文本" a&b",则表示两个单独的参数。为避免这种情况,您需要urlencode文本,该文本会将&转换为%26。
只有将&编码为&的HTML中的&字符才是必需的,这在文本中不应该包含,因为所有&都由%26代替。
我不知道Wordpress的复杂性,但我认为get_the_title()返回的值已经是HTML转义的。意思是,它包含&而不是&,因此,如果您像这样发送,则它是发送到Twitter的值。您想要的是获取没有HTML实体的文本,即您需要对其进行HTML解码,以将&转换为实际值&。然后,需要将HTML解码后的值进行URL编码,因此不会破坏您的URL语法。
放在一起,这有望实现:
可能还有其他方法可以直接从Wordpress中获取没有HTML实体的原始标题,而无需进行复杂的html_entity_decode舞蹈,但是同样,我对Wordpress并不了解很多。
PS:由于要将该URL输出到HTML上下文中,因此应该再次对该URL进行HTML编码,以确保它不会破坏HTML语法。不过,这主要是出于学术上的完整性,urlencode()不应返回任何会破坏HTML语法的内容。但仅出于学问完整性,请在此处:
-
我知道,这就是我最初对其进行编码的原因,但是问题是当我对整个文本进行编码时,特殊的HTML字符会显示为实际状态。参见示例:twitter.com/intent/
-
为什么URL开头会有特殊的HTML字符?同样,输出的实际HTML内容是什么?
-
我正在使用get_the_title(),以便可以使用text=get_the_title()鸣叫一些内容。帖子标题中偶尔会出现或&,这并不罕见。输出的实际HTML是已编码的get_the_title(),但是正如我之前所说,问题在于Twitter正在状态中输出特殊字符。我已经用谷歌搜索了这个问题,似乎没有人能确定的解决方案,因为这显然是一个已知的问题。 ^我刚刚向您展示了实际输出的HTML。
-
那么get_the_title()返回已经是HTML转义的文本吗?然后,您需要对该文本进行HTML解码,然后再对其进行URL编码。如果您使用URL编码的文本包含值&,那么那就是发送到Twitter的值。
-
均尝试:echo urldecode(urlencode(get_the_title)))和echo urlencode(urldecode(get_the_title)))。第一个返回与上述相同的内容,第二个返回未转义的字符。
-
我认为,这是应该得到比以往更多支持的那些答案之一。出色的答案,出色的解释。救了我一些头疼。