0

以下は、より大きな Web サイトの HTML コードの小さなスニペットです。そのサイトの情報の一部をデータベースに解析しようとしています。ただし、ベストプラクティスが何であるかはわかりません。正規表現を使用する必要がありますか、それとも PHP DOM パーサーを使用して関連データを取得できますか。

例えば。"Prisantydning" => 2090000 および "Fellesformue" =>4483 および "verditakst" =>2300000 に関する情報を取得したい

何を指示してるんですか?

<div class="mod">
    <div class="inner">
        <div class="bd objectinfo" data-automation-id="information">
            <h2>Prisdetaljer</h2>
            <dl class="multicol colspan2 fleft mtn">

                    <dt>Prisantydning</dt>
                    <dd>2 090 000,-</dd>



            </dl>
            <dl class="multicol colspan2 fleft mlm mtn">

                    <dt>Fellesformue</dt>
                    <dd>4 483,-</dd>


                    <dt>Verditakst</dt>
                    <dd>
                            2 300 000,-
                        <button class="icon utility strong contrast helpButton"
                                data-helptext-id="Verditakst">?
                        </button>
                        <div id="Verditakst" class="helptext supportText">
                            Verditakst utføres av en autorisert takstmann, og er en teknisk vurdering av hva boligen er
                            verdt.
                            Dette samkjøres med meglers markedsvurdering.
                        </div>
                    </dd>


                    <dt>Låneverdi</dt>
                    <dd>
                            2 000 000,-
                        <button class="icon utility strong contrast helpButton"
                                data-helptext-id="Låneverdi">?
                        </button>
                        <div id="Låneverdi" class="helptext supportText">
                            Låneverdi er en vurdering av markedsverdi som skal gi banken den nødvendige sikkerhet for
                            pant i
                            eiendommen. Låneverdi ligger som oftest på 80 - 90% av verditakst.
                        </div>
                    </dd>
4

2 に答える 2

0

htmlは規則的ではないため、正規表現を使用するのは正しい方法ではありません。Barmarは正しい方法です。

あなたはそのようなDOMを使うことができます:

$doc = new \DOMDocument();
$doc->loadHtmlFile($yourUrl);//needs ini option "allow_url_fopen" to be true
$datas = array();
foreach($doc->getElementsByTagName('dt') as $dt){
     //get the datas : $dt->textContent is the key
     //as a first approach we get the whole text value of the dd that is related
     $datas[$dt->textContent] = $dt->nextSibling->textContent ;
     //then we just get the figures
     $datas[$dt->textContent]=preg_replace('#[^0-9]+$#','',$datas[$dt->textContent]);
}
于 2012-12-23T10:54:25.320 に答える
0

「大規模なウェブサイト」とは、通常、乱雑で予測不可能なコードを意味します。ただし、そうでない場合でも、正規表現はHTMLコンテンツの評価に使用することを意図したものではありません(そのようなアクションが正当化される可能性がある非常に単純なケースを除く)。したがって、ここではDOMDocumentのようなDOMパーサーを使用する必要があります。

この場合、DOMXpathも優れた追加機能になります。これにより、などのDOMDocumentDOM関数を使用してノードを選択する手間を省くことができます。getElementsByTagName

于 2012-12-23T11:01:24.493 に答える