HTML整形ツールを修正しました
HTML整形ツールを下記の通り修正しました。
◆整形対象外の仕様を変更
これまで、整形対象外の部分を全て「タグ」として扱い、インデント対象にしてきました。
変更後は整形対象外を単に文字として扱い、インデント対象から外せる機能を追加した
インデント対象
<!-- --> :htmlコメント
<?php ?> :PHPソース
<% %> :ASPソース
<script> </script> :scripteタグ
<style> </style> :styleタグ
<pre> </pre> :preタグ
インデント対象外 (追加)
" " :ダブルクオーテーション
' ' :シングルクオーテーション
<? ?> :PHPソース
<![CDATA[ ]]> :XML CDATAセクション
◆タグ内の属性を縦に改行する機能を追加
タグ内に2個以上の属性があった場合、縦に改行します
属性改行をオンに整形してみてください
◆整形後の行数が不正確だったバグを修正
ようやくバグ修正できました(^^)/
※ソース:こちらです
すいません。
少しだけ気になったので、また出しゃばります。
ソース(htmlseikei.txt)が EUC で書かれていて、
通常テキストなのでブラウザがキャラクタセット
を理解できずGoogle Chrome では一般的に化けます。
( Content-Type:text/plain )しかないせいです
Google Chrome 39.0.2146.0 canary でも同じです。
そういえば、Google Chrome は Shift_JISという判断
を下していましたので、Chrome が全く何もしていない
事は無く、判断に失敗しているようです。
1人でやってると、くじけそうになる時があるんですが、コメントいただけると非常に助かります。
ソースは、なんちゃってビュワーで表示する様に直しました。
これはとてもすばらしい!!!
自作のフレームワークにHTML整形の機能をつけたいと思って探していました。なかなか思うものが見つからず、自分で作るしかないかなと思っていたところ、こちらを発見しました。
利用方法としては、Smarty の Outputfilter プラグインに組み込んで利用させてもらおうかと思っております。
shibuyaさん、コメントありがとうございます。
昨年、ソースをクラスを使って書き直しているので、他のツールへの移植も可能かとおもいますので、是非使ってみてください。
何か不具合、改良点などはコメントいただけると助かります。
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%程度の処理速度の改善が確認できました。
今のところ検証は十分ではないのですが、ご報告まで。
shibuyaさん
phpはあまり使い込んでいない為、情報いただけて非常に助かります。
タグ内の属性を縦に改行する機能をお頼みした者です。
HTTPS のページより、HTTP へポストしている為、正常に動作しなくなっています。
デベロッパーツールで強引に変更すると動作する事を確認しました。
できれば修正をお願いしたく存じます。
連絡ありがとうございます。
修正しました。
完全にテスト不足でした。
PAT Management
というような、
1つので完結したものが、
4)インデント対象外タグ(終了タグ不足数): s:property:(-1)
となってしまいます。
対応可能でしょうか?
先ほどのHTMLは
<s:property value=”message” escapeHtml=”false” ⁄>
です。
こういう文字コードをセットした際に\が消えてしまいます。
下記はチェックボックスでレ点を入れるための文字コード指定ですが、整形ツールで「\2713」⇒「2713」になったせいでチェックボックスに「2713」という数字が入るようになってしまいました。
input[type=”checkbox”]:checked::after {
content: ‘\2713’;
}