如何删除wordpress中的特殊字符?

时间:2011-09-19 11:46:03

标签: wordpress utf-8 wordpress-plugin special-characters topsy

我正在使用Topsy,它返回我的mebsite最高级别文章的标题,它返回一个RSS文件,其中包含帖子标题与那里链接。现在我只使用帖子名称并使用帖子标题我试图使用以下函数在mysql数据库中搜索:

get_post_by_title($postTitle,'post');

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

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

iPad Applications In Bloom’s Taxonomy NEXT

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

请帮帮我。感谢

3 个答案:

答案 0 :(得分:0)

首先让我们澄清一个误解:你的例子中的那个角色不是一个“特殊”角色。它是Unicode代码点U + 2019,“RIGHT SINGLE QUOTATION MARK”。它的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字符的帖子,例如’,当你用{{1}搜索它们时,它们没有出现(似乎你正在使用与the accepted answer on this question类似的东西 - 是吗?)解决方案有两种途径:以更易于搜索的格式存储标题,或使用搜索方法可以找到非ASCII字符。

以不同的方式存储标题需要您通过PHP的built-in htmlentities()函数运行它们或者在将它们存储到Wordpress DB之前 - 您还需要确保转换的字符没有等同于{{1的HTML实体表单,并确保您的数据库的collat​​ion / charset设置为UTF-8或其他支持Unicode的编码。这将是一项非常重要的努力。 ‡

使用不同的搜索方法不需要修改数据库或挖掘到WordPress内部,但它确实需要非常小心地摆弄搜索字符串。您需要在搜索中使用您要查找的确切字符,必要时表示为get_post_by_title()字符引用,或者在搜索中仔细使用通配符。

无论哪种方式,祝你好运。如果可以看到更多代码,则可以提供更具体的建议。



†:顺便说一下,如果你使用比PHP更好的语言和比MySQL更好的数据库,那么关于Unicode的生活也将变得更加容易。 WordPress与PHP和MySQL密不可分:PHP& MySQL在正确处理Unicode问题方面既糟糕又可怕,非常糟糕。如果你摘下PHP和PHP,你作为程序员的生活会变得更好。 MySQL来自它。

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

答案 1 :(得分:0)

从wp-config.php中删除

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

//定义( 'DB_COLLATE', 'utf8_unicode_ci');

答案 2 :(得分:-1)

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