作成日:2019-01-10, 更新日:2020-10-26
HTMLをマルっとパース
HTMLをマルっとパース。個人的にはあまり使わないので未調査
$source = file_get_contents(〇〇〇); // 文字コードの指定が正しいのに、文字化けを起こす→対応:libxml_use_internal_errors()、libxml_clear_errors() $domDocument = new DOMDocument(); libxml_use_internal_errors(true); $domDocument->loadHTML($source); libxml_clear_errors(); $xmlString = $domDocument->saveXML(); // XMLをパース $xmlObject = simplexml_load_string($xmlString); // 連想配列化 $aryDom = json_decode(json_encode($xmlObject), true);
HTMLタグをパース
・タグを単体でパースしようとすると文字化けを起こす→utf8の指定を追記
・タグ単体だと「head」や「body」で囲まれて、あとで取り出すのが面倒→無理やり「body」内の「xxx」に放り込む形でいく
function tagParse($tag='') { // 文字化け対策+後で抜き出すように調整 $utf8 = '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>'; $tmpTag = $utf8 . '<body><xxx>' . $tag . '</xxx></body>'; // HTMLをXMLとして適切に整形 $domDocument = new DOMDocument(); libxml_use_internal_errors( true ); $domDocument->loadHTML($tmpTag); libxml_clear_errors(); $xmlString = $domDocument->saveXML(); // XMLをパース $xmlObject = simplexml_load_string($xmlString); // 連想配列化 $aryDom = json_decode(json_encode($xmlObject), true); if ( is_array($aryDom) && isset($aryDom['body']) && isset($aryDom['body']['xxx']) ) { return $aryDom['body']['xxx']; } else { return $aryDom; } }