人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのソースコードを軽量化する為に、改行やスペースを削除しようと思います。
str_replace(array(" ","\n"),"",$source);
としてみたのですが、これだとソース内の「function」や「class」が無効になってしまいます。
他に良い書き方があったら教えてください。

●質問者: kt26
●カテゴリ:インターネット ウェブ制作
✍キーワード:Class PHP ソース ソースコード
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● y-kawaz
●100ポイント

こんな感じでどうでしょう?

<?php

/* 
 * PHPソースコード内の余分な空白を可能なかぎり削除します。
 *
 * ・単純に空白文字を消してしまうと色々問題が起こるので段階的に置換してみます。
 * ・文字列リテラル中の空白やコメントっぽい文字列のケアは対応外。
 * 例) "「こ の」空白は必要。//ここはコメントじゃないよ!"
 */
function cleanWhiteSpace($source) {
 //複数行コメンを削除
 $source = preg_replace('|/\*.*?\*/|sm', '', $source);
 //1行コメントを削除
 $source = preg_replace('/\/\/.*/', '', $source);
 #シャープによる1行コメントも削除
 $source = preg_replace("/\x23.*/", '', $source);
 //空白文字の連続を半角スペース一つにする
 $source = preg_replace('/\s+/', "\x20", $source);
 //記号前後の空白を削除
 $source = preg_replace('/\s?([\(\)\[\]\{\},\;:=<>\+\-\/\*\%\!\?&\|])\s?/', '$1', $source);
 //最後のphpの閉じタグは無くて良いのでついでに削除
 $source = preg_replace('/\?>$/s', '', $source);
 return $source;
}

//テスト
echo cleanWhiteSpace(file_get_contents(__FILE__));

?>

↓実行結果

$ php a.php
<?php function cleanWhiteSpace($source){$source=preg_replace('|/\*.*?\*/|sm','',$source);$source=preg_replace('/\/\/.*/','',$source);$source=preg_replace("/\x23.*/",'',$source);$source=preg_replace('/\s+/',"\x20",$source);$source=preg_replace('/\s?([\(\)\[\]\{\},\;:=<>\+\-\/\*\%\!\?&\|])\s?/','$1',$source);$source=preg_replace('/\?>$/s','',$source);return $source;}echo cleanWhiteSpace(file_get_contents(__FILE__));

文字列リテラル中の空白やPHPコメントに見える文字列まで削除してしまうのが致命的な欠点ですが、そこに目を瞑れればそこそこ綺麗に動く気がします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ