Consider the following PHP code for getting RSS news on a site I’m developing:
<?php
$url = "http://dariknews.bg/rss.php";
$xml = simplexml_load_file($url);
$feed_title = $xml->channel->title;
$feed_description = $xml->channel->description;
$feed_link = $xml->channel->link;
$item = $xml->channel->item;
function getTheData($item){
for ($i = 0; $i < 4; $i++) {
$article_title = $item[$i]->title;
$article_description = $item[$i]->description;
$article_link = $item[$i]->link;
echo "<p><h3><a href=".$article_link.">". $article_title. "</a></h3></p><small>".$article_description."</small><p>";
}
}
?>
The data accumulated by this function should be presented in the following HTML format:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Новини от Дарик</title>
</head>
<body>
<?php getTheData($item);?>
</body>
</html>
As you see I added windows-1251(cyrillic) and utf-8 encoding but the RSS feed is unreadable if I don’t change the browser encoding to utf-8. The default encoding in my case is cyrilic but I get unreadable feed. Any help making this RSS readable in cyrilic(it’s from Bulgaria) will be greatly appreciated.
I’ve just tested your code and the Bulgarian characters displayed fine when I removed the
charset=windows-1251meta tag and just left the UTF-8 one. Want to try that and see if it works?Also, you might want to change your
<html>tag to reflect the fact that your page is in Bulgarian like this:<html xmlns="http://www.w3.org/1999/xhtml" lang="bg" xml:lang="bg">Or maybe you need to force the web server to send the content as UTF-8 by sending a Content-Type header:
Just be sure to include this before ANY other content (even whitespace) is sent to the browser. If you don’t you’ll get the PHP “headers already sent” error.