2016-05-13 5 views
0

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

Вот мой 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

@acoder У меня в этом коде есть PHP-теги. Это то, о чем вы говорите? – user3788671

ответ

0

Вам не нужно звонить ни 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> Wich является то, что вы хотите.