【问题标题】:How to remove special charecters in wordpress?如何删除wordpress中的特殊字符?
【发布时间】:2011-11-20 04:31:29
【问题描述】:

我正在使用 Topsy,它返回我网站上排名最高的文章的标题,它返回一个 RSS 文件,其中包含带有链接的文章标题。现在我只取帖子名称并使用帖子标题我尝试使用以下函数在 mysql 数据库中搜索:

get_post_by_title($postTitle,'post');

但问题是 topsy 返回了我的帖子标题,但它还在 RSS 文件中添加了一些特殊字符,例如“'”替换为“'”这个字符。因为这个 get_post_by_title() 函数不会按标题名称返回我的帖子。

编辑:它返回一个像这样的帖子标题:

iPad Applications In Bloom’s Taxonomy NEXT

这里的单引号是特殊字符。

请帮助我。谢谢

【问题讨论】:

  • 你能举一个它返回的标题的例子吗?
  • 当标题中有引号时,究竟是什么不起作用?这听起来像是一个在正确转义输出时不需要首先解决的问题

标签: utf-8 wordpress special-characters topsy


【解决方案1】:

首先让我们澄清一个误解:您示例中的字符不是“特殊”字符。它是 Unicode 代码点 U+2019,“右单引号”。它的 HTML 实体引用是’。它是一个普通字符——它恰好是一个在 ASCII 中没有表示的普通字符。在回答您的具体问题之前,我需要告诉您阅读 Joel Spolsky's article "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" - 这正是它在锡上所说的内容,除非您至少吸收一点关于 Unicode 的知识,否则您将不断遇到问题像这样。不要太担心:每个人都会遇到这样的问题,直到他们学会如何处理文本。 Unicode 并不“难”,因为它“容易暴露我们对文本工作方式的无意识假设”。 †

现在,回答你的问题。

如果我没看错,您的情况是,您的标题中包含非 ASCII 字符的帖子,例如 ’,当您使用 get_post_by_title() 搜索它们时没有显示(它似乎您正在使用类似于 the accepted answer on this question 的东西 - 是吗?)有两种解决方法:以更容易搜索的格式存储标题,或使用可以找到非 ASCII 的搜索方法字符。

以不同的方式存储标题需要您通过 PHP 的 built-in htmlentities() 函数运行它们,或者在将它们存储到您的 Wordpress 数据库之前 - 您还需要确保转换没有 HTML 实体的字符相当于 '\xNN' 表单,并确保您的数据库的排序规则/字符集设置为 UTF-8 或其他支持 Unicode 的编码。这将是一笔不小的努力。 ‡

使用不同的搜索方法不需要修补您的数据库或深入研究 WordPress 内部结构,但它确实需要非常小心地摆弄搜索字符串。您需要在搜索中使用您要查找的确切字符,如有必要,表示为 '\xNN' 字符引用,或者在搜索中谨慎使用通配符。

无论如何,祝你好运。如果您的更多代码可见,可能会提供更具体的建议。



†:顺便说一句,如果你使用比 PHP 更好的语言和比 MySQL 更好的数据库,你在 Unicode 方面的生活也会变得更加轻松。 WordPress 与 PHP 和 MySQL 有着千丝万缕的联系:PHP 和 MySQL 在正确处理 Unicode 问题方面都非常糟糕、可怕、非常糟糕。如果你把 PHP 和 MySQL 去掉,你作为程序员的生活会变得更好。

‡:说真的,PHP is atrociously bad at thisMySQL is in a shoelaces-tied-together state of fumbling。避开他们。

【讨论】:

    【解决方案2】:

    从 wp-config.php 中删除

    //define('DB_CHARSET', 'utf8');

    //define('DB_COLLATE','utf8_unicode_ci');

    【讨论】:

      【解决方案3】:

      您可以使用 preg_replace 轻松删除特殊字符,请参阅这篇文章 -> http://code-tricks.com/filter-non-ascii-characters-using-php/

      【讨论】:

      • 请总结您链接到的帖子;简单地提供一个链接是没有帮助的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2022-08-03
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多