htmlspecialchars converting apostrophe to amp;amp;#039; for facebook og:title tag(htmlSpecialchars将撇号转换为amp;amp;#039;用于Facebook og:title标记)
问题描述
我的网站上的og:title标签有点问题。每当文章标题有撇号并在Facebook上共享时,就会显示'
,而不是撇号。我已经将我的meta标签与一个朋友的站点进行了比较,后者成功地显示了他的撇号,我能找到的唯一区别是:
放置在我的网站的og:标题中的撇号代码:
'
放置在朋友站点的og:title中的撇号代码:
'
我认为我的站点在转换撇号之后正在转换&符号,这使得它在Facebook上显示为'
。
我正在为Joomla!使用K2,我已经在他们的论坛上问了这个问题,但我已经5天没有收到任何回复了。
这是我在COM_K2>视图>项目>view.html.php文件中找到的代码:
$document->setMetaData('og:title', htmlspecialchars($document->getTitle(), ENT_QUOTES, 'UTF-8'));
我不懂php,有什么方法可以更改这一点,使代码显示正确吗? 如果有帮助,这里有一个link,指向网站标题中带有撇号的文章。
感谢您抽出时间。
推荐答案
请参阅the documentation for htmlspecialchars并查看它何时转换单引号(通常用作撇号)的说明。如果设置了ENT_QUOTES
,并且您在调用htmlSpecialchars时设置了ENT_QUOTES
,则仅对单引号进行编码。
如果您不想对单引号进行编码,那么您只需停止使用该标志,并将其切换为ENT_COMPAT
(对双引号而不是单引号进行编码),这样您的语句就会变成:
$document->setMetaData('og:title',
htmlspecialchars($document->getTitle(),
ENT_COMPAT, 'UTF-8'));
(我已经添加了换行符,以便在此页上易于阅读,但不要在实际代码中添加换行符。)
还要注意,htmlSpecialchars有一个最后的可选参数(在PHP 5.2.3中添加),名为double_encode。它默认为true
,但是如果您将此参数设置为false
,那么PHP将不会对现有实体进行编码,因此即使您确实对单引号进行了编码,生成的'
也不会通过进一步调用htmlSpecialchars进一步编码为'
,它将保留为'
。
这篇关于htmlSpecialchars将撇号转换为&;amp;#039;用于Facebook og:title标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:htmlSpecialchars将撇号转换为&;amp;#039;用于Facebook og:title标记
基础教程推荐
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01