PHP Scrape HTML Между <pre>тегами - PullRequest
0 голосов
/ 09 ноября 2011

У меня возникли проблемы с поиском способа очистки содержимого HTML только из тегов

and 
с помощью PHP5.

Я хочу взять пример следующего документа, взять 2 (или более областей предварительного тега, его динамику) и поместить его в массив.

<code>blablabla
<pre>save
this
really
не это
save this too
really
но не это

как поместить область между тегами pre файла html на другом сервере в массив.

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Я рекомендую использовать xpath

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DomXpath($doc);

$pre_tags = array();
foreach($xpath->query('//pre') as $node){
    $pre_tags[] = $node->nodeValue;
}
0 голосов
/ 14 ноября 2011

Вы могли бы просто использовать регулярное выражение для извлечения всего содержимого внутри предварительных тегов.

В python это будет:

<code>re.compile('<pre>(.*?)
', re.DOTALL) .findall (html)
0 голосов
/ 09 ноября 2011

Предполагая, что HTML правильно сформирован, вы можете сделать что-то вроде:

<code>$pos = 0;
$insideTheDiv = array();
while (($pos = strpos($theHtml, "<pre>", $pos)) !== false) {
    $pos += 5;
    $endPrePos = strpos($theHtml, "
", $ pos); if ($ endPrePos! == false) { $ insideTheDiv [] = substr ($ theHtml, $ pos, $ endPrePos - $ pos); } еще перерыв; }

После того, как это будет сделано, $insideTheDiv должен быть массивом всего содержимого тегов pre.

Демонстрация: http://codepad.viper -7.com / X15l7P (перевод строки с выхода)

...