[PHP] 게시판에 SyntaxHighlighter 적용을 위한 준비
이건 크게 사용할 일은 없을 듯 하지만.. 만약 게시판에 php 코드등을 올릴 때 사용하면 좋을 듯 하다.
우선 정해야할 것이 코드를 어떻게 올릴 것인지인데.. [code:xxx] …… [/code] 이런 식으로 [code] [/code]로
감싼 부분에 코드를 입력한다. 그리고 여기서 xxx 는 언어명이다. php 라면 [code:php] 이렇게 된다.
코드는 html 에디터를 이용해 입력하는 것으로 한다. 에디터가 없는 환경은 고려하지 않았다.
<?php
// [code:xxx] ..... [/code] 변환
function conv_syntaxhighlighter($contents)
{
if(!$contents)
return;
// code 내에 포함된 tag 제거
preg_match_all('/[code:[^]]*]([^[]*)[/code]/i', $contents, $matchs);
for($i=0; $i<count($matchs[0]); $i++) {
$code = $matchs[0][$i];
$code = preg_replace('/<[^>]*>[^<]*<!--[^-->]*>/', '', $code);
$code = preg_replace('/<[^/>]*/?>/', '', $code);
$contents = str_replace($matchs[0][$i], $code, $contents);
}
$contents = preg_replace("/[code:s*([^]]+)]/i", "<pre class="brush:\1">", $contents);
$contents = preg_replace("/[/code]/i", "</pre>", $contents);
return $contents;
}
?>
위 코드는 이전 2013/03/01 – [JS] 티스토리 블로그에 SyntaxHighlighter 적용하기 V2 에서와 유사한 방법으로
적용하기 위해 게시판의 내용을 변환하는 함수이다. 정규식을 능숙하게 다루지 못해 저런 코드가 되어버렸지만
좀 더 간단히 할 수 있다면 좋을 것 같다. 근데.. 그건 언제가 될지는 아직 모르겠다.