创建DOMDocument:匹配PHP解析器中的某个元素

时间:2010-12-24 23:22:37

标签: php mysql parsing domdocument

亲爱的社区晚会,

首先是:felize Navidad - 我想祝你圣诞快乐!在我的季节休息期间,我正在使用一个小的解析器脚本。

今天我正在尝试在php中调试一个小DOMDocument对象。理想情况下,如果它是好的 我可以让DOMDocument以类似数组的格式输出,以存储数据 在数据库中!

我的例子:head over to the url - see the example: the target

我想过滤掉块中的数据:

Schulart: BBS
Schulnummer:60119
Anschrift: Berufsbildende Schule Boppard Antoniusstr. 21; 56154 Boppard
Telefon: (0 67 42) 80 61-0
Telefax: (0 67 42) 80 61-29
E-Mail: sekretary@bbs-boppard.de
Internet: website 
Träger:Kreisverwaltung Rhein-Hunsr�ck-Kreis
letzte Änderung: 08 Feb 2010 14:33:12 von 60119

我调查了源代码 - 并发现了感兴趣的属性应该 是这一个:  class="content"div class="content"><!-- TYPO3SEARCH_begin --> 甚至更好:wfqbeResults

因此,如果我运行DOMDucument方式,我可以像这样使用它:

$dom->getElementById('wfqbeResults');

这里的代码是: - 我的踪迹

<?php

$dom = new DOMDocument();
@$dom->loadHTMLFile(' -> here the website goes in<- ');
$divElement = $dom->getElementById('wfqbeResults');

$innerHTML= '';
$children = $divElement->childNodes;
foreach ($children as $child) {
   $innerHTML .= $child->ownerDocument->saveXML( $child );
} 
echo $innerHTML;

<?

Duhh:这会输出很多垃圾。无论如何,代码都吐出了很多html。我必须 对代码进行大修,以便从解析器中获取想要的9行:

目标是什么:我想了解以下内容:

a。 9行,包含9个标签和9个值。 b。我想准备输出以将其存储在MySQL-DB中!

期待一些提示 问候零

1 个答案:

答案 0 :(得分:1)

这是解决方案返回格式化数组中的标签和值,准备输入mysql!

<?php

$dom = new DOMDocument();
@$dom->loadHTMLFile('http://schulen.bildung-rp.de/gehezu/startseite/einzelanzeige.html?tx_wfqbe_pi1%5buid%5d=60119');
$divElement = $dom->getElementById('wfqbeResults');

$innerHTML= '';
$children = $divElement->childNodes;
foreach ($children as $child) {
$innerHTML = $child->ownerDocument->saveXML( $child );

$doc = new DOMDocument();
$doc->loadHTML($innerHTML);
//$divElementNew = $dom->getElementsByTagName('td');
$divElementNew = $dom->getElementsByTagname('td');

    /*** the array to return ***/
    $out = array();
    foreach ($divElementNew as $item)
    {
        /*** add node value to the out array ***/
        $out[] = $item->nodeValue;
    }

echo '<pre>';
print_r($out);
echo '</pre>';

} 

?>