1

phpを使用して別のドメインのhtmlから<ul>sを取得したいと思います。innerHTML

$mhraWebUygulamasi =file_get_contents('http://www.mhra.gov.uk/Safetyinformation/Safetywarningsalertsandrecalls/index.htm');
$doc = new DOMDocument();
$doc->loadHTML($mhraWebUygulamasi);
$doc->preserveWhiteSpace=false;

しかし、さらにコーディングする前に、この警告メッセージが表示されました。

Warning: DOMDocument::loadHTML(): Unexpected end tag : fragmentinstance in Entity, line: 123 in C:\xampp\htdocs\YeBeSis\mhra.php on line 4

4行目は$doc->loadHTML($mhraWebUygulamasi); 他の行番号がURLのHTMLコードをターゲットにしている可能性があります。ターゲットURLを穏やかに処理し、それをDOMコンテナにロードする方法は?どこで私は間違えましたか?

4

2 に答える 2

1

PHP Simple HTML DOM Parserを使用すると、簡単に実行できます。ここからsimple_html_dom.phpファイルをダウンロードして、次のように使用するだけです。

include('simple_html_dom.php');
$html = file_get_html('http://www.mhra.gov.uk/Safetyinformation/Safetywarningsalertsandrecalls/index.htm');

次にループします。たとえば、すべてのulタグとそのコンテンツを取得するには、次のループを使用できます

foreach($html->find('ul') as $li){
    echo $li->innertext.'<br />';
}

または、これを使用してul、クラス名を持つのみを取得しますsubnav2

foreach($html->find('ul.subnav2') as $li){
    echo $li->innertext.'<br />';
}

上記のコードの出力(5liタグ)

  • 医療機器アラート
  • フィールド安全通知(FSN)
  • ドラッグアラート
  • 医薬品に関する安全上の警告とメッセージ
  • 医薬品の安全性に関する英国の公的評価レポート
  • 使い方は簡単で、構文の選択はと同じjQueryです。詳細については、ドキュメントをお読みください。

    于 2013-03-15T22:52:22.023 に答える
    1

    表示されるメッセージは単なる警告です。エラーではありません-DOMはまだ入力されています。

    ただし、着信HTMLが正しくないことを警告しているため、HTMLが生成するDOMが完全に作成者の意図どおりであることを保証することはできません。

    しかし、多くの場合、それは本当に問題ではないので、それでよければ、警告を無視して、関係なく続行してください。

    その場合、警告が表示されないようにするだけです。

    これについては、ここで詳しく説明します。DomDocument(PHP)によって整形式でないHTMLをロードするときの警告を無効にする

    お役に立てば幸いです。

    于 2013-03-15T23:03:36.633 に答える