0

これに対する答えはおそらく簡単だと思いますが、私は困惑しています。次の小さなコードを使用して、HTMLから情報を取得し、それをデータベースに書き込みます。(現在は表示するだけです)

foreach($html->find('div[class=posttitle front] a, div[class=copy post] a') as $a){
$articles[] = array($a->href,$a->innertext);
}
foreach($articles as $item) {
echo "<p>";
$href =  $item[0];
echo "</p><p>"; 
echo $href;
echo "</p><p>";
echo $item[2];
echo "</p>";
}

コードは正常に機能します。必要なものはすべて手に入れます。しかし、複数のセレクターによって返される情報は同じリンクに関するものであるため、すべての単一リンクに対して、セレクターごとに$ articles[0[および$articles[1]を取得するのは面倒です。

基本的に、これら2つのセレクターには同じリンクに関する情報があります。

どうすればもっと明確に質問できるかわかりません、ごめんなさい。基本的に私が代わりに欲しいのは$articles[0]、[1]、[2]、[3]です。

ありがとうございました

4

2 に答える 2

0

私が理解したように、あなたは配列内のレコードを一意の比較で作成したいと思いますhrefhref配列のキーとして使用する必要があります。

foreach($html->find('div[class=posttitle front] a, div[class=copy post] a') as $a){
    $articles[$a->href] = $a->innertext;
}
foreach($articles as $href=>$innertext) {
    echo "<p>";
    echo "</p><p>"; 
    echo $href;
    echo "</p><p>";
    echo $innertext;
    echo "</p>";
}
于 2013-01-26T23:54:25.340 に答える
0

DOMでこれを行うことができないため、私は別のルートに行きました。最初の例のコードを使用しましたが、検索対象から属性を削除しました。両方のdivタグの内部テキストだけを取得しました。それを私のデータベースに書き込んだら、正規表現を使用して情報を取得する方がはるかに簡単でした。

DOMは、乱雑でないhtmlに最適です。

于 2013-01-29T01:43:16.670 に答える