简单的HTML DOM在PHP中不断返回明文而不是outertext(HTML)

时间:2016-05-13 22:33:54

标签: php html simple-html-dom

我正在使用Simple HTML DOM来抓取网页。我试图得到一个td元素的html,它不断带回明文而不是html。我已经尝试了outertext和innertext但仍然没有运气。

这是我的PHP代码:

<?php
    include_once('simple_html_dom.php');

    class JobPosting {
        var $Id;
        var $PostDate;
        var $RequistionNumber;
        var $Title;
        var $Company;
        var $City;
        var $State; 
        var $Description;
        var $Requirements;     
    }

    function GetJobPosting($id)
    {
        $html = file_get_html('https://rew31.ultipro.com/PAC1016/JobBoard/JobDetails.aspx?__ID=*6CF6029C92AD592E');

        $jobposting = new JobPosting;

        $jobposting->Id = $id;
        $jobposting->RequistionNumber = $html->find('#DataCell_Req_Code')[0]->plaintext;
        $jobposting->PostDate = $html->find('#DataCell_Req_PostDate')[0]->plaintext;
        $jobposting->Title = $html->find('#DataCell_Req_TitleFK')[0]->plaintext;
        $jobposting->Company = $html->find('#DataCell_Req_ReqUDF3FK')[0]->plaintext;
        $jobposting->City = $html->find('#DataCell_Req_City')[0]->plaintext;
        $jobposting->State = $html->find('#DataCell_Req_State')[0]->plaintext; 
        $jobposting->Description = $html->find('#DataCell_Req_Description')[0]->outertext;
        $jobposting->Requirements = $html->find('#DataCell_Req_Requirements')[0]->outertext;   

        return $jobposting;   
    }
?>

主要问题是我希望在范围内保持文本格式。这意味着它将具有所有正确的间距和间距,但似乎间隔被空格替换。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您无需同时调用plaintextoutertext,因为这些是删除HTML代码的功能。

DOM对象有一个隐式__toString方法,它返回html,所以你只需要返回该对象,或者将它连接到一个字符串以强制转换:

$html = str_get_html('<html><body><div id="hello">Hello!</div></body></html>');
echo $html->find('#hello')[0];

这会输出<div id="hello">Hello!</div>,这就是你想要的。