-3

我们正在尝试像这样解析 HTML:

<li><a class="newsMarquee" href="http://www.lebanonfiles.com/news/617843">مستخدمو &quot;كهرباء لبنان&quot;: الاضراب مستمر حتى إقرار موازنة 2013 الخاصة بنا</a></li>
                                                            <li><a class="newsMarquee" href="http://www.lebanonfiles.com/news/617840">اجتماع برئاسة محافظ الجنوب بحث في اوضاع النازحين</a></li>

我们得到这个结果:

ÃÃ'ÚÃÉ ÇááÌÇä ÃÃ'ÓÊ ËáÇËÉ ãÔÇÃ'ÃÚ ÈÆÆÃÉ ãÓÊÎÃãæ “ßåÃ'ÈÇà áÈäÇä”:ÇáÇÖÃ'ÇÈ ãÓÊãÃ' ÃÊì ÅÞÃ'ÇÃ' à £Ã¦Ã‡Ã'äÉ 2013 ÇáÎÇÕÉ 銂</p>

我们使用过:有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>';
?>
4

2 回答 2

1

Check the encoding from the source as Pekka says.

The line

header("Content-Type: text/html; charset=utf-8");

has no impact when you read the xml file. This line only update the output of your webpage.

于 2013-10-22T12:57:45.550 回答
1

你的来源

http://www.lebanonfiles.com/news/617843

未使用 UTF-8 字符集;它使用的是 Windows-1256(阿拉伯语)*。

尝试将Windows-1256其用作DOMDocument 调用的第二个参数:

$dom = new DOMDocument('1.0', 'Windows-1256');

* 供将来参考:我通过在浏览器中打开 URL 并转到“编码”菜单发现了这一点——这就是浏览器使用的编码。您还可以查看浏览器开发人员工具的“网络”选项卡,查看Content-type页面返回的内容。

于 2013-10-22T12:45:10.647 回答