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')」を変更するべし。