非UTF字符中断RSS提要

时间:2012-01-03 作者:Alex

我经常会遇到一个令人讨厌的问题,有时一个客座博主会无意中在帖子中放入一个非UTF字符或一个不平衡的HTML标记,这将破坏RSS提要,并导致FeedBurner无法通过电子邮件将其发送给订阅者。

有没有一种技术方法可以避免此类问题?

谢谢

2 个回复
最合适的回答,由SO网友:bueltge 整理而成

将此代码复制到php文件中,将此文件复制到插件文件夹中,然后在WordPress的后端将其激活。我希望这有帮助,但我不测试它,写在草稿上。

<?php
/**
 * Plugin Name: Non-UTF characters in RSS feed
 * Plugin URI:  http://wordpress.stackexchange.com/questions/37845/non-utf-characters-break-rss-feed/
 * Description: Filter content for unicode characters
 * Version:  1.0.0
 * Author:      Frank Bültge
 * Author URI:  http://bueltge.de
 * License:     GPLv3
 */

// This file is not called from WordPress. We don\'t like that.
! defined( \'ABSPATH\' ) and exit;

foreach ( array( \'the_content_rss\', \'the_excerpt_rss\', \'the_title_rss\', \'comment_text_rss\' ) as $filter )
    remove_filter( $filter, \'filter_non_utf8_chars\', 0 );

function filter_non_utf8_chars( $content ) {

    return htmlentities2( $content );
}
?>

SO网友:Brian Fegter

如果这只是发生在RSS内容区域,请尝试使用\\u content\\u RSS过滤器过滤字符:

add_filter(\'the_content_rss\', \'filter_non_utf8_chars\', 0, 1);
function filter_non_utf8_chars($content){
    $content = preg_replace(\'/[^(\\x20-\\x7F)\\x0A]*/\',\'\', $content);
    return $content;
}
以下是与RSS源相关的过滤器:

希望这对您有所帮助!

结束

相关推荐

Help Me Choose RSS or XML-RPC

Scenario: 我有一个母网站example.com 其中有一个博客,大约有12个类别。我还有另外12个wordpress网站。一些位于example.com 有些是不同的领域。12个站点代表12个类别。当我在一个类别上发布帖子时,帖子也应该发布到一个合适的类别网站。当我想到它时,我可以通过RSS和XML-RPC来实现。但出于这个目的,哪一个是最好的选择?我必须在xml rpc的母站点和RSS的子站点中放置代码(使用simplepie)Here is some more Point that I ha