HTMLFilter v.0.1 배포 정보
기타 HTMLFilter v.0.1 배포본문
HTMLFilter를 만들기는 진작에 만들었는데 테스트할 시간도 없고 또 테스트 해주는 사람도 없는 관계로 그냥 방치하다 조금 손보고 올려봅니다. 그럼 피드백이 생기겠죠.
파일을 풀어보면 HTMLFilter.php와 HTMLFilterConfig.php가 있습니다. 여기서 HTMLFilterConfig.php 파일을 열어보면 각 태그를 제어할 수 있음을 확인할 수 있습니다.
$prohibited_url_syntax에는 금지하고 싶은 URL의 정규식을 적으면 됩니다. 타입이 array이므로 여러개 입력이 가능합니다. 예를 들어 /sir\.co\.kr\/adm/i이라고 적는다면 이 syntax가 들어간 모든 URL은 제거가 됩니다. 혹 테스트를 완전하게 하지 못했기 때문에 빠진 게 있을 수 있을지 모르겠습니다. 댓글을 달아놓으면 시간이 될 때마다 확인해서 버젼업을 할께요.
$tags는 array형태로 원치 않는 태그는 false를 지정하세요. 또한 등록되지 않은 태그 역시 금지 태그로 인식됩니다.
또한 각 태그의 attributes는 $tag_attributes를 통해 지정이 가능합니다. 이것을 통해 각 태그의 속성을 포함할 것인지 각각 설정이 가능합니다.
사용법은 압축된 파일을 풀어 lib폴더에 복사하세요. 그리고 lib/common.lib.php 파일의 conv_content 함수를 다음과 같이 수정해서 쓰시면 됩니다:
function conv_content($content, $html)
{
global $config, $board;
if ($html)
{
include_once("$g4[path]/lib/HTMLFilter.php");
$filter = new HTMLFilter();
if ($html == 2) { // 자동 줄바꿈
$content = preg_replace("/\n/", "<br/>", $content);
}
// 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), "<table");
$table_end_count = substr_count(strtolower($content), "</table");
for ($i=$table_end_count; $i<$table_begin_count; $i++)
{
$content .= "</table>";
}
// XSS (Cross Site Script) 막기
$content = $filter->parse($content);
}
else // text 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $content);
$content = get_text($content, 1);
$content = url_auto_link($content);
}
return $content;
}
개인 사정상 시간이 많지 않으므로 개발이 더딜지 모르겠습니다. 유지보수하던 게 늘어서 개인적으로 시간이 많이 나질 않아 지금은 간간히 확인 정도만 하고 있네요. 또 사무기기 일을 하다보니 월말, 월초가 가장 바쁜 시즌이라 당분간은 댓글만 확인하고 업데이트를 해야 한다면 2월 중순이 넘어가야 되지 않을까 싶네요.
정식 버젼이 나오기까지는 copyright가 걸려있습니다. 하지만 상업적,비상업적 사용이 자유롭습니다. 0.5 이상이 되면 GPL로 전환이 가능할 것으로 생각합니다.
파일을 풀어보면 HTMLFilter.php와 HTMLFilterConfig.php가 있습니다. 여기서 HTMLFilterConfig.php 파일을 열어보면 각 태그를 제어할 수 있음을 확인할 수 있습니다.
$prohibited_url_syntax에는 금지하고 싶은 URL의 정규식을 적으면 됩니다. 타입이 array이므로 여러개 입력이 가능합니다. 예를 들어 /sir\.co\.kr\/adm/i이라고 적는다면 이 syntax가 들어간 모든 URL은 제거가 됩니다. 혹 테스트를 완전하게 하지 못했기 때문에 빠진 게 있을 수 있을지 모르겠습니다. 댓글을 달아놓으면 시간이 될 때마다 확인해서 버젼업을 할께요.
$tags는 array형태로 원치 않는 태그는 false를 지정하세요. 또한 등록되지 않은 태그 역시 금지 태그로 인식됩니다.
또한 각 태그의 attributes는 $tag_attributes를 통해 지정이 가능합니다. 이것을 통해 각 태그의 속성을 포함할 것인지 각각 설정이 가능합니다.
사용법은 압축된 파일을 풀어 lib폴더에 복사하세요. 그리고 lib/common.lib.php 파일의 conv_content 함수를 다음과 같이 수정해서 쓰시면 됩니다:
function conv_content($content, $html)
{
global $config, $board;
if ($html)
{
include_once("$g4[path]/lib/HTMLFilter.php");
$filter = new HTMLFilter();
if ($html == 2) { // 자동 줄바꿈
$content = preg_replace("/\n/", "<br/>", $content);
}
// 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), "<table");
$table_end_count = substr_count(strtolower($content), "</table");
for ($i=$table_end_count; $i<$table_begin_count; $i++)
{
$content .= "</table>";
}
// XSS (Cross Site Script) 막기
$content = $filter->parse($content);
}
else // text 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $content);
$content = get_text($content, 1);
$content = url_auto_link($content);
}
return $content;
}
개인 사정상 시간이 많지 않으므로 개발이 더딜지 모르겠습니다. 유지보수하던 게 늘어서 개인적으로 시간이 많이 나질 않아 지금은 간간히 확인 정도만 하고 있네요. 또 사무기기 일을 하다보니 월말, 월초가 가장 바쁜 시즌이라 당분간은 댓글만 확인하고 업데이트를 해야 한다면 2월 중순이 넘어가야 되지 않을까 싶네요.
정식 버젼이 나오기까지는 copyright가 걸려있습니다. 하지만 상업적,비상업적 사용이 자유롭습니다. 0.5 이상이 되면 GPL로 전환이 가능할 것으로 생각합니다.
추천
4
4
댓글 전체
수고하셨습니다.
태그하나씩 확인하고 쓰느라 고생많이 하셨겠습니다. ㅡㅡ;
태그하나씩 확인하고 쓰느라 고생많이 하셨겠습니다. ㅡㅡ;

감사합니다.