JAPRO Template Engine の PHP 版では、わざわざ自前で HTML をパースしています。
それにはこんな理由があります。
loadHTML/loadHTMLFile/saveHTML/saveHTMLFile
タグのインデントなど、空白文字が無視されてしまいます。
正確なパースとは言えません。
HTMLを書いた人の意図を無視することは良い事とは思えません。
saveHTML が出力する HTML もゴチャゴチャです。
XHTML は対応出来ないようです。
load/loadXML/save/saveXML
HTMLを読み込ませると、href/src 属性に & がある場合にワーニングとなります。
scriptタグの中も & があるとワーニングとなります。
コメントの終了は –> の前に空白文字がないとワーニングとなります。
とにかくワーニングだらけになります。無理があります。
結局自前で
HTMLの実情に合ったパースを行うには、結局自前でパースする必要があります。
出力の際も自分でツリーをたどって表示する必要があります。
自前でパースする際のヒント
mb_internal_encoding( ‘UTF-8’ )
mb_regex_encoding( ‘UTF-8’ )
mb_regex_set_options( ‘pr’ )
テキスト部分/タグ/残りに分解する正規表現
A(.*?)(<.*?>)(.*)z