Php 编码获取Twitter共享URL的标题()

Php 编码获取Twitter共享URL的标题(),php,wordpress,twitter,Php,Wordpress,Twitter,我在Twitter上使用带有弹出式共享按钮的直接链接: &在URL中有一个特殊的含义,用于分隔多个参数。如果您的URL是…a&b…,它不代表文本“a&b”,它代表两个单独的参数。为了避免这种情况,您需要对文本进行urlencode,这将&转换为%26 将和编码为&仅对HTML中的&字符是必需的,因为所有&字符都被%26替换,因此文本中不应包含这些字符 我不知道Wordpress的复杂性,但我认为get\u the\u title()返回的值已经是HTML转义的。意思是,它包含&而不是

我在Twitter上使用带有弹出式共享按钮的直接链接:
&
在URL中有一个特殊的含义,用于分隔多个参数。如果您的URL是
…a&b…
,它不代表文本“a&b”,它代表两个单独的参数。为了避免这种情况,您需要对文本进行
urlencode
,这将
&
转换为
%26

编码为
&仅对HTML中的
&
字符是必需的,因为所有
&
字符都被
%26
替换,因此文本中不应包含这些字符

我不知道Wordpress的复杂性,但我认为
get\u the\u title()
返回的值已经是HTML转义的。意思是,它包含
&
而不是
&
,因此,如果您像那样发送Twitter,那么这就是发送到Twitter的值。您想要的是获得没有HTML实体的文本,即需要对其进行HTML解码以打开
&返回到实际值
。HTML解码后的值需要进行URL编码,这样就不会弄乱URL语法

总而言之,这应该可以做到:

echo urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8'));
可能还有其他方法可以直接从Wordpress获得没有HTML实体的原始标题,而不需要进行复杂的
HTML\u entity\u decode
dance,但我对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');

“但当我这样做时,它会在状态消息中显示特殊字符”是什么意思?您要输出的最终HTML是什么?它如何显示在Twitter上?它将特殊字符输出到实际状态消息中。例如,你可以在这里看到:我理解,这就是我最初编码它的原因,但问题是当我编码整个文本时,特殊的HTML字符显示在实际状态中。请参见此处的示例:为什么URL中有特殊的HTML字符作为开头?同样,实际输出的HTML是什么?我正在使用
获取标题()
,这样我就可以用
text=get\u标题()
在推特上发布一些东西。文章标题中偶尔会出现
&
,这并不罕见。实际输出的HTML是编码的
get_The_title()
,但正如我前面所说的,问题是Twitter正在输出状态中的特殊字符。我在谷歌上搜索了这个问题,似乎没有人有明确的解决方案,因为这显然是一个已知的问题。^我刚才向您展示了实际输出的HTML。那么
get_the_title()
是否返回已转义的HTML文本?然后在URL编码之前,需要对文本进行HTML解码。如果URL编码的文本包含值
&
,那么这就是发送到Twitter的值。在我看来,这是那些应该获得比现在多得多的投票的答案之一。回答得很好,解释得很好。省得我头疼了。