HTML整形ツールを修正しました

5 9月, 2014 (12:47) | html | By: ohishi

HTML整形ツールを下記の通り修正しました。

◆整形対象外の仕様を変更

これまで、整形対象外の部分を全て「タグ」として扱い、インデント対象にしてきました。
変更後は整形対象外を単に文字として扱い、インデント対象から外せる機能を追加した

インデント対象
<!--  -->            :htmlコメント
<?php  ?>            :PHPソース
<%  %>               :ASPソース
<script>  </script>  :scripteタグ
<style>  </style>    :styleタグ
<pre>  </pre>        :preタグ

インデント対象外 (追加)
"  "                 :ダブルクオーテーション
'  '                 :シングルクオーテーション
<?  ?>               :PHPソース
<![CDATA[  ]]>       :XML CDATAセクション

◆タグ内の属性を縦に改行する機能を追加

タグ内に2個以上の属性があった場合、縦に改行します
属性改行をオンに整形してみてください

◆整形後の行数が不正確だったバグを修正

ようやくバグ修正できました(^^)/

※ソース:こちらです

 

Comments

Comment from lightbox
Time 2014年9月5日 at 15:20

すいません。
少しだけ気になったので、また出しゃばります。
 
ソース(htmlseikei.txt)が EUC で書かれていて、
通常テキストなのでブラウザがキャラクタセット
を理解できずGoogle Chrome では一般的に化けます。
( Content-Type:text/plain )しかないせいです
 
Google Chrome 39.0.2146.0 canary でも同じです。

Comment from lightbox
Time 2014年9月5日 at 15:24

そういえば、Google Chrome は Shift_JISという判断
を下していましたので、Chrome が全く何もしていない
事は無く、判断に失敗しているようです。

Comment from ohishi
Time 2014年9月5日 at 15:56

1人でやってると、くじけそうになる時があるんですが、コメントいただけると非常に助かります。
ソースは、なんちゃってビュワーで表示する様に直しました。

Comment from shibuya
Time 2014年9月19日 at 04:20

これはとてもすばらしい!!!
自作のフレームワークにHTML整形の機能をつけたいと思って探していました。なかなか思うものが見つからず、自分で作るしかないかなと思っていたところ、こちらを発見しました。

利用方法としては、Smarty の Outputfilter プラグインに組み込んで利用させてもらおうかと思っております。

Comment from ohishi
Time 2014年9月19日 at 10:17

shibuyaさん、コメントありがとうございます。
昨年、ソースをクラスを使って書き直しているので、他のツールへの移植も可能かとおもいますので、是非使ってみてください。
何か不具合、改良点などはコメントいただけると助かります。

Comment from shibuya
Time 2014年9月21日 at 06:03

SMARTYプラグイン移植の際にこちらで修正した点がいくつかあったので、ご報告いたします。

・1クラスにつき1ファイルに分割しました。(__autoload使用しているため)
HtmlFormat.class.php
PatternConverte.class.php

・ElapsTimeクラスはフレームワークには不要でしたので削除しました。

・エスケープはSMARTYで行うので、クラス内でhtmlspecialchars関数を使用しているところは削除しました。

・HtmlFormatクラスに以下の定数を定義しました
const INDENT_NONE = 0; // インデントをしない設定を追加(html軽量化に利用可能?)
const INDENT_TAB = 1;
const INDENT_SPACE_1 = 2;
const INDENT_SPACE_2 = 3;
const INDENT_SPACE_4 = 4;

処理速度向上のために以下のことを行いました
・for ($i = 0; $i foreach ($list as $i => $li)に変更(ロジックに影響のない部分のみ)
・while (list($key, $val) = each($list)) -> foreach ($list as $key => $val)に変更
・配列の添字の引用符をダブルクォーテーションからシングルクォーテーションに変更
・if () {}; if () {}; -> if – else に書き直し可能な部分を変更。
・$var = $var + 1; などインクリメントを $var++; や ++$var; に変更

こちらの環境では焼く20%程度の処理速度の改善が確認できました。

今のところ検証は十分ではないのですが、ご報告まで。

Comment from ohishi
Time 2014年10月16日 at 14:15

shibuyaさん
phpはあまり使い込んでいない為、情報いただけて非常に助かります。

Write a comment