我们正试图像这样解析HTML:
<li><a class="newsMarquee" href="http://www.lebanonfiles.com/news/617843">مستخدمو "كهرباء لبنان": الاضراب مستمر حتى إقرار موازنة 2013 الخاصة بنا</a></li>
<li><a class="newsMarquee" href="http://www.lebanonfiles.com/news/617840">اجتماع برئاسة محافظ الجنوب بحث في اوضاع النازحين</a></li>
我们得到的结果是:
ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃμÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃà ãÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃà ...ÞÃ'ÇÃ'ãÃ|ÃÃÃÃÃÃÉ2013ÇáÎÇÃÃÃÃÃÃÃLJ
我们使用过:header("Content-Type: text/html; charset=utf-8");
有什么建议吗?
这是代码:
<?php
echo '<html><head>';
header("Content-Type: text/html; charset=utf-8");
echo '</head>';
echo '<body>';
$dom = new DOMDocument('1.0');
@$dom->loadHTMLFile($url);
$params = $dom->getElementsByTagName('div'); // Find Sections
$k=0;
foreach ($params as $param) //go to each Article 1 by 1
{
if($params->item($k)->getAttribute('class') == 'no-js')
{
$params2 = $params->item($k)->getElementsByTagName('a');
$i=0;
while($params2->item($i)->getAttribute('class') == 'newsMarquee')
{
if($params2->item($i)->getAttribute('class') != 'newsMarquee')
break;
else
{
echo '' .$params2->item($i)->nodeValue. '<br/>';
//echo 'Link: '.$params2->item($i)->getAttribute('href').'<br/><br/>';
$i++;
}
}
}
$k++;
}
echo '</body>';
echo '</html>';
?>
答案 0 :(得分:1)
您的来源
http://www.lebanonfiles.com/news/617843
不使用UTF-8字符集;它使用的是Windows-1256(阿拉伯语)*。
尝试使用Windows-1256
作为second argument to your DOMDocument call:
$dom = new DOMDocument('1.0', 'Windows-1256');
*供将来参考:我通过在浏览器中打开URL并转到&#34;编码&#34; menu - 这是浏览器使用的编码。您还可以查看&#34; Net&#34;浏览器的开发人员工具标签,查看页面返回的Content-type
。
答案 1 :(得分:1)
检查来源的编码,如Pekka所说。
该行
header("Content-Type: text/html; charset=utf-8");
读取xml文件时,没有任何影响。 此行仅更新您网页的输出。