텍스트큐브 플러그인 - SyntaxHighlighter using Google Code Prettify 1.1.1 (rezmod)

텍스트큐브로 바꾼 이후로 플러그인 페이지 하단의 '플러그인 업로드 게시판' 링크가 바뀌어 발길이 뜸해졌던 테터툴즈 플러그인 게시판.

오랫만에 들어가봤다.

텍스트큐브로 바뀐 이후에도 꾸준히 활성화 되어 있어서, 텍스트큐브에서 사용할 수 있는 유용한 플러그인들이 꽤나 많이 나와 있었다.

그 중에서 내 눈길을 끈것 중 하나가 바로 SyntaxHighlighter.

코드 하이라이팅 플러그인으로 langtohtml을 썼다가, 텍스트큐브로 바꾸고 난 후에는 안쓰고 있었는데.. 마침 딱 좋은게 나왔다는 기쁨이 들었다.

게다가 왠지(?) 믿음이 가는 Google의 코드를 이용한 것이라니.. 가볍고 깔끔하고 딱 좋다. 주1

바로 다운로드 받아 설치를 해 보았다.

그러나.. 제대로 동작하지 않음. -_-;; 블로그가 서버렸다.

사용자 삽입 이미지

SyntaxHighlighter v1.1.1는 잘 사용되는 곳도 있는가 하면, 블로그가 사라져 버리는 곳도 있었다.

나만 그런것이 아니라, 이미 많은 사람들이 이같은 문제를 호소하고 있었음을 확인.. 뭔가 이유가 있을것이라 생각하고 코드 분석에 들어갔다.

잠깐 동안의 코드 분석 후.. 마침내 원인을 찾았다.

문제는 PHP의 버전. SyntaxHighlighter v1.1.1이 PHP 5에서 추가된 stripos(), str_ireplace()를 사용하고 있기 때문이었다.

만약, PHP가 에러를 표시하도록 설정되어 있었다면 이런 에러 사항에 대해서 표시되었을 테지만, 내가 호스팅을 받고 있는 nayana의 PHP 설정은 그렇지 않았기 때문에 마치 블로그가 사라져버린듯한 현상이 일어난 것.

PHP 4까지는 원래 strpos(), str_replace()가 있었지만, 이것들은 대소문자를 구별하기 때문에 대소문자 구별 없는 문자열 치환을 지원하기 위하여 위 함수들이 추가된 거였다.

그렇다면 해결법은 간단. [CODE]와 [code]를 모두 지원하는 대신, [code]만 지원하도록 하면 되는 것. 수정할 부분도 위 함수 이름에서 i만 빼는걸로 OK다.

이걸로, PHP 4 이하 버전을 사용하는 서버에서도 SyntaxHighlighter v1.1.1을 사용할 수 있다.

수정하기 귀찮은 사람은 아래에 내가 수정한 파일을 사용해도 좋다. 주2

SyntaxHighlighter_1.1.1_rezmod.zip

PHP 4 이하에서도 동작할 수 있도록 수정된 SyntaxHighlighter v1.1.1

이 파일은 앞에서 언급한 부분 외에도 원래 코드 중 일부가 삭제되었는데.. 삭제된 부분은 스타일에 관한 부분으로, 개인적인 취향에 의한 것이므로 불만은 금지하시라. -_-;; 주3

  1. 여기에 관련 사이트들을 적어둔다. Google Code Prettify Google Code Prettify for wordpress SyntaxHighlighter 1.1.1 - Google Code Prettify
  2. 라이센스가 GPL인데, 코드를 가져다가 수정한 경우 저작자, 함수 이름등을 어떻게 해야 하는지 잘 몰라서 원래 코드의 것을 그대로 두었다. 제작자는 여전히 '아이'님으로 되어있다.
  3. 참고로 pre 태그에 word-wrap을 적용하기 위해서 여기에 나온 내용을 참고했다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

, , ,

2007/10/19 00:53 2007/10/19 00:53
Trackback Address:http://reznoa.wo.tc/blog/trackback/49
  1. 2007/10/22 11:20
  2. 2007/10/23 11:48
  1. 와우^^ 멋진데요 ^^
    제 블로그는 이상하게 안사라지던데 php5를 써서 그런것이군요 ^^

  2. 아, 그런것이었군요. 제 서버가 php가 5.x대라 그럴것이라고는 생각도 못했습니다. 항상 하위 호환을 생각해야 하는 개발자가 그것을 망각하고 있었네요.
    아무튼 좋게 수정해 주셔서 감사합니다.

  3. 그렇게 말씀해 주시니, 저야말로 감사~

[로그인][오픈아이디란?]