UTF8 Ошибки при создании PHP SimpleXML RSS-канал - PullRequest
4 голосов
/ 10 января 2012

Я создаю RSS-канал для сайта.

Я использую SimpleXML для создания структуры XML. Когда я вызываю $ xml-> asXML ();, он выдает много предупреждений:

ErrorException [ Warning ]: SimpleXMLElement::asXML() [simplexmlelement.asxml]: string is not in UTF-8

Я не уверен, что это за ошибка. Таблица базы данных, из которой она читает, является utf8_general_ci. Я попытался запустить utf_encode для строки, которая испортила строки вместо того, чтобы исправить это.

//First create the XML root
$xml = new SimpleXMLElement('<rss version="2.0"></rss>');

//Create the Channel
$channel = $xml->addChild('channel');

//Construct the feed parameters
$channel->addChild('title', 'CGarchitect Feed');
$channel->addChild('link', Config::get('base_url'));
$channel->addChild('description', 'CGarchitect is the leading online community for architectural visualization professionals.');
$channel->addChild('pubDate', date("D, d M Y H:i:s T"));

//Get the feed items

$nodes = <....snip... >

foreach ($nodes as $node)
{

    //Parse the title and description
    $title = htmlentities(strip_tags($node->title));
    $description = htmlentities(strip_tags($node->description));
    $newItem = $channel->addChild('item');
    $newItem->addChild('title', $title);
    $newItem->addChild('description', $description);
    $newItem->addChild('pubDate', date("D, d M Y H:i:s T", $node->published_at));

}

header('Content-Type: application/xhtml+xml');
echo $xml->asXML();

Заранее спасибо ...

Leonard

1 Ответ

2 голосов
/ 10 января 2012

Я смог воспроизвести вашу проблему, заменив фрагмент $ узлов ... фрагментом

class myNode {

    public $title="(╯°□°)╯︵ ┻━┻";
    public $description="dscr";
    public $published_at=0;

    public function __construct(){
        $this->published_at=time();
    }

}

$nodes = array(new myNode());

Казалось, что простое удаление вызовов htmlentities работает нормально.(Выходные данные были должным образом экранированы как символьные объекты)

...