Calender
Sun Mon Tue Wed Thu Fri Sat
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>
広告
SEARCH

SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
LINKS
PROFILE
OTHERS
SKYPE
PC: skype.jojo.jp
chat
iPad: iphone.jojo.jp
chat call
THANKS



本日:
昨日:
多言語
広告
 ▼▲ 作業日報 ▼△
    What's under the hood?
<< YouTube4 | main | The OWC have been discontinued in Office 2007 >>
痛いhtml->xml、xhtml、変換処理(tidy)
 htmlの内容をデータとして扱いたい場合、普通はDOMに流し込む為にxhtmlかxmlに変換する必要がありますが、PHPのtidy機能を利用すると便利です
 下のPHPコードは同一フォルダにある*.htmlファイル(Shift_JIS)をXML化し[htmlファイル名]+.xmlとして保存します
<?
    
//tidyconfig
    //http://tidy.sourceforge.net/docs/quickref.html
    
$tidy_config = array(
                            
//'input-encoding' => 'shiftjis',
                            //'output-encoding' => 'utf8',//(効かない)
                            
'char-encoding' => 'shiftjis',//コードはSJIS
                            
'drop-font-tags' => true,//fontタグ削除
                            
'drop-proprietary-attributes' => true,
                            
'logical-emphasis' => true,//文字装飾タグ削除
                            
'doctype'      => 'omit',//DOCTYPE宣言は
                            
'add-xml-decl' => false,//XML宣言無(効かない)
                            
'indent'       => false,//Indent無
                            
'output-xml'   => true//XML化
                            //'output-xml'   => true, //XHTML化はこちら
                            
'wrap'         => 200);//200文字で改行
    //対象ファイルを配列として抜出
    
$arrFiles =glob(realpath('.').'/*.htm');

    foreach (
$arrFiles as $f){

        
$xmltidy tidy_repair_file$f ,$tidy_config ,'shiftjis');

        
file_put_contents($f.'.xml',$xmltidy);
        
    };
?>

 わりあい普通なタグの閉じ忘れ等、のみならず、属性のクォートが重複していたり(<td align="center"">)、クォートと属性がスペースで区切られていなかったり(<td align="center"class="abc">)のような泣けてくるようなHTMLでもきちんと処理し小文字でそろえて出力してくれます
 ASP系では、InfoPathを購入しパッケージに入っているhtml2xhtml.dllのconvertToXHTML()関数で以前やった記憶があるのですが、PHPでは標準でこの機能が準備されていて、かなりの勢いで便利です

 ただ「output-encoding」が効かなかったり(EFBFBD)、tidy_repair_file()の第2パラメータが無視されたりする事もあるようですが、、、、気のせいかもしれません

リンク:
Tidy Library Project
tidy_repair_file()
tidy設定パラメータ
convertToXHTML メソッド
| - | 12:05 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/918143