【问题标题】:htmlspecialchars converting apostrophe to ' for facebook og:title taghtmlspecialchars 将撇号转换为 '对于 facebook og:title 标签
【发布时间】:2013-04-30 12:14:44
【问题描述】:

我对我网站上的 og:title 标记有一点困难。每当文章标题带有撇号并在 Facebook 上被分享时,' 就会出现而不是撇号。我将我的元标记与成功显示他的撇号的朋友的网站进行了比较,我能找到的唯一区别是:

我网站的 og:title 中的撇号代码: '

朋友网站的 og:title 中的撇号代码: '

我认为我的网站在转换撇号后正在转换与号,这使得它在 Facebook 上显示为 '

我正在使用 K2 for Joomla!,并在他们的论坛上提出过这个问题,但我已经 5 天没有收到任何回复。

这是我在 com_k2>views>item>view.html.php 文件中找到的代码:

$document->setMetaData('og:title', htmlspecialchars($document->getTitle(), ENT_QUOTES,  'UTF-8'));

我不是 php 精通,有什么办法可以改变它,这样代码就会显示出来吗? 如果它有帮助,这里是一个 link 到来自该网站的标题中带有撇号的文章。

感谢您的宝贵时间。

【问题讨论】:

    标签: php facebook metadata joomla2.5 joomla-k2


    【解决方案1】:

    查看the documentation for htmlspecialchars 并查看何时转换单引号(通常用作撇号)的描述。如果设置了ENT_QUOTES,它只会对单引号进行编码,并且您在调用htmlspecialchars时设置了ENT_QUOTES

    如果您不希望对单引号进行编码,那么您只需停止使用该标志并将其切换为 ENT_COMPAT(它编码双引号而不是单引号),这样您的语句就变成了:

    $document->setMetaData('og:title',
            htmlspecialchars($document->getTitle(),
            ENT_COMPAT,  'UTF-8'));
    

    (我添加了换行符,以便在此页面上轻松阅读,但不要在实际代码中添加换行符。)

    另请注意,htmlspecialchars 有一个名为 double_encode 的最终可选参数(在 PHP 5.2.3 中添加)。默认为true,但如果您将此参数设置为false,那么PHP 将不会对现有实体进行编码,因此即使您对单引号进行了编码,生成的' 也不会进一步编码为'通过进一步调用 htmlspecialchars,它将保留为 '

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 1970-01-01
      • 2022-09-25
      • 2011-10-11
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多