PHPのソースを色分けするスクリプト
2010年7月11日
jp_SearchJeansTagsで使った、PHPコードを色分けする部分のコードは、次の通り。他でも使えそうなので、メモをかねてここにアップしておくことにする。
使用の際は、半ばあたりの「array('self','color_code')」を変更するべし。
static private function color_code($m){
static $statements;
if (!is_array($m) && !isset($statements)) {
$statements=array('abstract','and','array','as','break',
'case','catch','class','clone',
'const','continue','declare','default','do',
'else','elseif','enddeclare','endfor','endforeach',
'endif','endswitch','endwhile','extends','final',
'for','foreach','function','global','goto',
'if','implements','interface','instanceof',
'namespace','new','or','private',
'protected','public','static','switch','throw',
'try','use','var','while','xor',
'die','echo','empty','exit','eval',
'include','include_once','isset','list','require',
'require_once','return','print','unset');
$search='/\*[\s\S]*?\*/'; // multi line comments
$search.='|//.*[\r\n]'; // single line comments
$search.='|#.*[\r\n]'; // single line comments
$search.='|\?>[\s\S]*?<\?php'; // strings
$search.='|\$?(?:[a-z_][a-z0-9_]*)'; // valiables, statements and functions
$search.='|[0-9]+'; // numbers
$search.='|"(?:\\\\.|[^"]*)"'; // strings
$search.="|'(?:\\\\.|[^']*)'"; // strings
return substr(preg_replace_callback('@'.$search.'@i',array('self','color_code'),'?>'.$m),2);
}
switch(substr($m[0],0,1)){
case '/':
return '<span style="color:grey;">'.$m[0].'</span>';
case '$':
return '<span style="color:brown;">'.$m[0].'</span>';
case '"': case "'":
return '<span style="color:green;">'.$m[0].'</span>';
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
return '<span style="color:red;">'.$m[0].'</span>';
default:
if (in_array($m[0],$statements)) return '<span style="color: blue;">'.$m[0].'</span>';
return $m[0];
}
}使用の際は、半ばあたりの「array('self','color_code')」を変更するべし。