[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 에서와 유사한 방법으로

적용하기 위해 게시판의 내용을 변환하는 함수이다. 정규식을 능숙하게 다루지 못해 저런 코드가 되어버렸지만

좀 더 간단히 할 수 있다면 좋을 것 같다. 근데.. 그건 언제가 될지는 아직 모르겠다.

 

 

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.