Простой HTML DOM продолжает возвращать открытый текст, а не внешний текст (HTML) в PHP

Я использую простую модель HTML-модели для очистки веб-страницы. Я пытаюсь получить html элемента td, он продолжает возвращать открытый текст, а не html. Я пробовал внешний и внутренний текст, но все равно не повезло.

Вот мой код 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;   
    }
?>

Основная проблема в том, что я хочу сохранить форматирование текста в пределах диапазона. Это означает, что в нем будут все правильные разрывы и интервалы, но похоже, что разрывы заменяются пробелами.

Что я делаю неправильно?


person user3788671    schedule 13.05.2016    source источник
comment
Вы забыли открывающий тег.   -  person a coder    schedule 14.05.2016
comment
@acoder В моем коде есть теги PHP. Это то, о чем вы говорите?   -  person user3788671    schedule 14.05.2016


Ответы (1)


Вам не нужно вызывать ни plaintext, ни outertext, потому что это функции для удаления тегов 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>, что вы хотите.

person JohnKiller    schedule 23.05.2016