【问题标题】:display error when get content from HTML using Dom使用 Dom 从 HTML 获取内容时显示错误
【发布时间】:2014-03-30 05:34:37
【问题描述】:

当我使用 dom 从此链接获取内容时: link here

我得到的这个内容是 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;

当我更改一个小代码时:

echo utf8_decode($contents); 

它显示:Nh? cô nàng ??ng ??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.

更新日期:

我解决了我的问题如下:添加

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;
    }

【问题讨论】:

  • 你能发布你的代码吗?
  • 是的。 '$link_mp3=$linkTemp.HadlingLink($html2->find('object#jwplayer param [name=flashvars]',0)->value); //echo $link_mp3.'
    '; $arrayContents=$html2->find('div[align=justify]'); //var_dump($content); $内容=''; foreach ($arrayContents as $content){ $contents=$contents.$content->outertext; } 回声 $contents;'
  • 你能把它贴在这个问题上吗?这里很难读。
  • 我只是将内容链接置顶。但错误字符串
  • 我已经编辑了我的问题。

标签: php html


【解决方案1】:

在您的 html 页面中使用以下“元”标签。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2016-04-05
    • 2021-05-11
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多