Posted at

Simple HTML DOM Parserで読み込むと改行が削除されてしまう対応

PHPでhtmlのdom操作はSimple HTML DOM Parserが便利だなと思って使ってみましたが、

file_get_htmlで読み込むと改行コードが勝手に削除されてしまってハマったのでメモです。


試してみたこと


file_get_htmlのオプションを指定する

file_get_htmlで読み込む際のオプション指定で$stripRNをfalseにするといいという記述を見つけたのでやってみた

$html = file_get_html($file, false, null, -1, -1, true, true, DEFAULT_TARGET_CHARSET, false);

str_get_htmlの場合はこのよう

$html = str_get_html($str, true, true, DEFAULT_TARGET_CHARSET, false);



が結果は変わらずだった。


MAX_FILE_SIZEを増やしてみる

読み込むHTMLのデータ量が大きすぎると読み込みに失敗するそうです。

default600KBに設定されてるので、simple_html_dom.phpを直接開いてMAX_FILE_SIZEの値を増やしてみた



が結果は変わらずだった。


file_get_htmlの$stripRNオプションを直接書き換える

simple_html_dom.phpを直接編集してfile_get_html関数の$stripRNのdefault値をfalseにしてみた

スクリーンショット 2019-10-09 10.43.33.png



すると無事改行が削除されていたのが改善された

推奨できる内容かは分かりませんが、最終手段としてのメモとして。。

これで改善されたということはオプションの指定の方法が間違っていただけかも。。