0

私は PHPSimpleHTMLDOM パーサーを使用しており、2 つの条件で foreach ループを何らかの形で実装したいと考えています。必要な見出しを取得していますが、その特定の見出しに適用される href も取得したいと考えています。href だけに対してネストされた foreach ループを記述すると、ループが多すぎて、多くの重複が出力されます。これが私のコードです:

include_once ('simple_html_dom.php');
$html = file_get_html('somehtml.com');

  foreach ($html->find('ul[class=headlines] li') as $return){
    //if I put another foreach here, too many duplicates
    echo $return;
  }

もう 1 つの foreach ループは次のようになります。

foreach ($html->find('ul[class=headlines] li a') as $href){
  $link = $href->href;
  echo $link;
}

これらの 2 つの条件を 1 つの foreach ループに入れて、リンクが正しい記事に対応し、それを別の php ファイルに渡して何かを実行できるようにするにはどうすればよいですか? 前もって感謝します

4

1 に答える 1

0

次の HTML 構造があるとします。

<ul class="headlines">
    <li><a href="http://google.com">Google</a></li> 
    <li><a href="http://yahoo.com">Yahoo</a></li>   
    <li><a href="http://bing.com">Bing</a></li>
</ul>

次に、すべてのliアイテムをトラバースし、次のようにaタグに対応する n 番目の子 (この場合は最初の子) をフェッチする必要があります。

foreach ($html->find('ul[class=headlines] li') as $return){
    $a = $return->children(0);
    echo 'Link: ' . $a->href . '<br />';
    echo 'Headline: ' . $a->plaintext . '<br />';
}

$aリンクと見出しを個別に取得せずに、ここで単純に印刷できることに注意してください。

DOMなど、パフォーマンスを向上させるためにlibxmlに基づくネイティブ拡張機能を使用することをお勧めします。XPath と組み合わせて、物事を単純にすることもできます。

于 2013-02-28T13:15:46.790 に答える