使用 Dom 从 HTML 获取内容时显示错误


display error when get content from HTML using Dom

当我使用 dom 从此链接获取内容时:链接在这里

我得到的这个内容是HTML如下:

<div align="justify"> “…Và  em muốn biết, nÆ¡i trái tim vẫn nhá»› thÆ°Æ¡ng âm thầm bao lâu nay /Sẽ mang đến cho mình Æ°á»›c mÆ¡ vá» hạnh phúc ấy /Hay là  ná»—i xót xa, có hay /Rằng tình yêu em luôn bao la /Rồi sẽ tá»›i má»™t ngà y anh chợt nhận ra , tình ta nhÆ° đóa hoa đợi khi nắng mai /Khi đôi môi lại rạng rỡ , tình ta chẳng phai nhòa…â€â€“ giai Ä‘iệu ngá»t ngà o của má»™t ca khúc vang lên trong chÆ°Æ¡ng trình radio Ä‘ang phát sóng là m cô chợt chạnh lòng. Má»™t cảm giác vừa quen vừa lạ nhen lên nÆ¡i trái tim. Cô cố gắng lục lại trí nhá»› của mình: 30 giây! 1 phút! 2 phút! Chợt, mắt cô thoáng buồn, cảm xúc trong trái tim cô nhÆ° vỡ òa khi tất cả nhÆ° má»™t cuốn phim chạy chậm trong trí nhá»› cùng má»› cảm xúc há»—n Ä‘á»™n: Dòng thá»i gian trở vá» trong cuốn phim là  những kỉ niệm cùng anh – chà ng sÄ© quan hải quân. </div>

虽然这个链接内容如下:

 <div align="justify">1. Em không đẹp như các cô bạn gái trước đây của tôi. Em cũng không dịu dàng và nhìn tôi bằng ánh mắt trìu mến như họ. Em còn có một nhóc con đã ba tuổi, thằng bé dễ thương, kháu khỉnh và có đôi mắt buồn giống hệt mẹ. Em như một bông hoa dại cô độc, từng cánh hoa đơn trắng muốt, nhụy hoa vàng mềm mại, thân dài mảnh mai với những chiếc lá thanh mảnh, run rẩy nở trong gió nhưng không bao giờ cong gãy. Còn tôi, với đôi tay luôn được bao bọc trong lồng kính, lại tùy tiện ngắt hoa, không biết rằng trên đó có gai, cũng không hề biết rằng nó sẽ làm cho trái tim mình ứa máu. Đã hơn một lần tôi thổ lộ lòng mình với em nhưng đều nhận được ánh mắt lạnh lùng và lời từ chối phũ phàng:</div>

我知道这里有错误格式,但我无法修复它。 如何在 PHP 中解决此问题?

这是我的代码:

$link_mp3=$linkTemp.HadlingLink($html2->find('object#jwplayer param [name=flashvars]',0)->value);
//echo $link_mp3.'<br/>';
$arrayContents=$html2->find('div[align=justify]');
//var_dump($content);
$contents='';
foreach ($arrayContents as $content){
    $contents=$contents.$content->outertext;
}
echo $contents;

当我更改一个 litle 代码时:

echo utf8_decode($contents); 

它显示:Nh?议员??呵呵,??t át, ?m m?c kiêu k? ??Ng gi?a anh chàng mùa ?ông l?nh lùng và anh chàng mùa h? ?m áp.

更新日期 :

我修复了我的 probleam,如下所示:添加

CURLOPT_ENCODING => "UTF-8", // handle all encodings

当使用 curl 获取 html 时。 这是函数

 static function get_web_page($url)
    {

        $options = array(
            CURLOPT_RETURNTRANSFER => true, // return web page
            CURLOPT_HEADER => false, // don't return headers
            CURLOPT_FOLLOWLOCATION => true, // follow redirects
            CURLOPT_ENCODING => "UTF-8", // handle all encodings
            CURLOPT_USERAGENT => "spider", // who am i
            CURLOPT_AUTOREFERER => true, // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 200, // timeout on connect
            CURLOPT_TIMEOUT => 200, // timeout on response
            CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
        );
        $ch = curl_init($url);
        curl_setopt_array($ch, $options);
        $content = curl_exec($ch);
        $err = curl_errno($ch);
        $errmsg = curl_error($ch);
        $header = curl_getinfo($ch);
        curl_close($ch);
        $header['errno'] = $err;
        $header['errmsg'] = $errmsg;
        $header['content'] = $content;
        return $header;
    }

HTML页面中使用以下"meta"标记。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />