2

PHP での DOM 解析は、HTML が完全にタグ付けされている場合にのみ機能します。完全な DOM ではない html を解析する必要があります。そのHTMLはリモートサーバーからのものなので、変更できません。

<html>
 <body>
  <table>
   <tr>
    <td>
    1
    </td>
    <td>
    2
    </td></td>
   </tr>
</table>

この構造でhtmlを解析すると、エラーが発生します。Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : td in Entity, line: 173 in C:\wamp\wwwxxxxxx on line 51

4

1 に答える 1

4

などのツールtidyで HTML を修復して、DOM で使用できるようにする必要があります。

$html = "<html>
 <body>
  <table>
   <tr>
    <td>
    1
    </td>
    <td>
    2
    </td></td>
   </tr>
</table>";

$tidy = tidy_parse_string($html);

$html = $tidy->html();
$cleanHTML = $html->value;
$doc = new DomDocument();
$doc-> loadhtml($cleanHTML);

注: Tidy は PHP に同梱されていません。関数を使用するには、拡張機能をインストールする必要があります。

于 2011-12-21T13:02:19.523 に答える