Сохранить новую строку, когда HTML-код находится на 1 строке, а разметка новой строки выполняется с помощью <div> - PullRequest
1 голос
/ 04 марта 2011

Мне нужно получить контент с сайта

Мне нужно получить

/html/body/div/div[2]/table/tbody/tr/td/div/div[2]/form/fieldset[2]/table[2]

или

<table class='properties'>

Для которого код виден здесь: http://paste.pocoo.org/show/347881/

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

Например, правильный вывод будет

tájékoztató
az eljárás eredményéről
A Közbeszerzések Tanácsa (Szerkesztőbizottsága) tölti ki
A hirdetmény kézhezvételének dátuma____________________
KÉ nyilvántartási szám_________________________________
I. SZAKASZ: AJÁNLATKÉRŐ
I.1) Név, cím és kapcsolattartási pont(ok) 

Проблема, с которой я сталкиваюсь, заключается в том, что новыйстроки вводятся вместе с div и не могут его получить.

Обновление

Это выполняется cron-ом PHP, поэтому нет доступа к JS.

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Существует библиотека с именем phpQuery: http://code.google.com/p/phpquery/

. Вы можете пройти через объект DOM, как с jQuery:

phpQuery::newDocument($htmlCode)->find('table.properties');

В огне содержимого подключенного элемента strip_tags и вы получите чистое содержимое этой таблицы.

2 голосов
/ 04 марта 2011

Хитрость заключается в том, чтобы извлечь внутренние элементы div в выражении xpath, а затем использовать их свойство textContent:

<?php

$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML(file_get_contents("..."));
libxml_use_internal_errors(false);

$domx = new DOMXPath($domd);
$items = $domx->query("/html/body/div/div[2]/table/tr/td/div/div[2]/form/fieldset[2]/table[2]/tr/td/div//div/div[@style='padding-left: 0px;']");

$output = "";
foreach ($items as $item) {
  $output .= $item->textContent . "\n";
}

echo $output;
...