/*
재인쇄가 있는 경우 저자를 표시해 주세요.
원저자: He Zhiqiang
개선: SonyMusic[ sonymusic@163.net ]
파일: ubb. php
비고: 개선되었다고 하는데, 사실 핵심 함수인 parse()가 완전히 재작성되었고, 아이디어도 다릅니다.
그러나 여전히 He Zhiqiang의 예에서 영감을 얻었으며 테스트 예제와 URLCHECK와 같은 여러 기능도 He Zhiqiang의 프로그램을 따릅니다.
아직 색상 기능은 없지만 추가하겠습니다.
프로그램에 버그나 불편한 점이 있으면 이메일로 알려주세요.
감사합니다!
개선된 기능:
이 클래스는 현재 다음과 같은 간단하고 실용적인 인코딩만 지원합니다.
[url] http://phpuser. ]
http:// 헤더는 필수가 아닙니다
예를 들어 [url]phpuser.com[/url]도 허용됩니다.
2. 이메일 링크
[이메일] sonymusic@163.net [/email]
3. 사진 링크
[img] http://www.phpchina.com/images/logo .gif [/img]
URL링크와 마찬가지로 이전 http는 선택사항입니다.
4. 텍스트
[b]굵은 글꼴[/b]
[i]기울임꼴[/i]
[u]밑줄[/u]
[h1] 제목 단어 아니요 . 1[/h1] ... [h6]제목 단어 6번[/h6]
[sup][/sup]
[sub][/sub]
[tt][/ tt ]
[s][/s]
[strike][/strike]
[em][/em]
[strong][/strong]
[code][/ code ]
[samp][/samp]
[kbd][/kbd]
[var][/var]
[dfn][/dfn]
[cite][/ cite ]
[small][/small]
[big][/big]
[blink][/blink]
다음 사항에 유의하세요.
1.
2. 태그에는 TAB 키가 허용되지 않지만 공백은 허용됩니다.
3. 이 클래스는 htmlencode, htmlencode4textarea, emailcheck 함수 및 urlcheck 클래스를 호출해야 합니다.
4. 수정 후 중첩은 지원되지만 url, email 및 img 태그의 중첩은 허용되지 않습니다.
기술 정보:
Ultimate 게시판
http://www.ultimatebb.com/
UBB 코드란
http://www.scriptkeeper.com/ubb/ubbcode.html
*/
include("urlcheck.php");
include("otherfunc.php"); //이 두 파일의 내용은 마지막에 첨부되어 있습니다.
//ubbcode 클래스
class ubbcode{
var $call_time=0
//처리 가능한 태그 및 처리 함수에 대한 해당 테이블
var $tags = array( //소문자 Tags= > ; 해당 처리 기능
'url' => '$this->url',
'email' => '$this->email',
'img' => $this->img',
'b' => '$this->간단함',
'i' => '$this->간단함',
' u' => '$this->간단함',
'tt' => '$this->간단함',
의' => '$this->간단함',
'스트라이크' => '$this->간단함',
'h1' => '$this->간단함',
'h2' => ',
'h3' => '$this->단순',
'h4' => '$this->단순',
'h5' => ->단순',
'h6' => '$this->단순',
'sup' => '$this->단순',
'sub' => ; '$this->단순',
'em' => '$this->단순',
'strong' => '$this->단순',
' 코드' => '$this->단순',
'samp' => '$this->단순',
'kbd' =>
'var' => '$this->단순',
'dfn' => '$this->단순',
'cite' => ;단순',
'작은' => '$this->단순',
'큰' => '$this->단순',
'깜박임' => $this->simple'
);
//url 연결 속성
var $attr_url
//url 적법성 검사 개체
var $urlcheck; attr_url){
$this->attr_url = ''.$attr_url;
$this->urlcheck = new urlcheck()
}
//$str UBB 인코딩 구문 분석 수행
함수 파싱($str){
$this->call_time;
$parse = ''.htmlencode($str);
$ret = '' >while(true ){
$eregi_ret=eregi("[[#]{0,1}[[:alnum:]]{1,7}]",$parse,$eregi_arr) //찾기[ xx]
if(!$eregi_ret){
$ret .= $parse;
break; //그렇지 않으면
}
$pos = @strpos ($parse,$ eregi_arr[0] );
$tag_len=strlen($eregi_arr[0])-2;//태그 길이
$tag_start=substr($eregi_arr[0],1,$tag_len)
$tag=strtolower ($tag_start);
if((($tag=="url") 또는 ($tag=="email") 또는 ($tag=="img")) 및 ($this- >call_time> 1)){
echo $this->call_time."
";
return $parse;//중첩할 수 없는 태그일 수 없으면 직접 반환
}
$parse2 = substr($parse,0,$pos);//태그 전
$parse = substr($parse,$pos $tag_len 2);//태그 후
if(!isset ($ this->tags[$tag])){
echo "$tag_start
"
$ret .= $parse2.'['.$tag_start.']'
계속; //지원되지 않는 태그인 경우
}
//해당 종료 태그 찾기
$eregi_ret=eregi("[/".$tag."]",$parse,$eregi_arr ); 🎜>if(!$eregi_ret){
$ret .= $parse2.'['.$tag_start.']'
continue;//해당 종료 태그가 없는 경우
}
$pos=strpos($parse,$eregi_arr[0]);
$value=substr($parse,0,$pos);//시작 태그와 끝 태그 사이의 내용입니다
$ tag_end =substr($parse,$pos 2,$tag_len);
$parse=substr($parse,$pos $tag_len 3);//종료 태그 뒤의 내용
if(($tag!= "url") 및 ($tag!="email") 및 ($tag!="img")){
$value=$this->parse($value)
}
$ret .= $parse2;
eval('$ret .= '.$this->tags[$tag].'("'.$tag_start.'","'.$tag_end.'", "'.$value.'");');
}
$this->call_time--
return $ret; end,$value){
return '<'.$start.'>'.$value.''.$end.'>'
}
함수 URL( $start,$end,$value){
$trim_value=trim($value)
if (strtolower(substr($trim_value,0,7))!="http://")
$trim_value="http://".$trim_value;
if($this->urlcheck->check($trim_value)) return 'attr_url.'>'.$value.''
그렇지 않으면 '['.$start.']'.$value.'[/'.$end를 반환합니다. .']';
}
함수 email($start,$end,$value){
if(emailcheck($value)) return ''.$value.'';
그렇지 않으면 '['.$start.']'.$value.'[/'.$end.']'를 반환합니다.
}
function img($start,$end,$value){
$trim_value=trim($value)
if ((strtolower(substr($trim_value,0,7))! ="http://") 또는 ($this->urlcheck->check($trim_value)))
return '그렇지 않으면 '['.$start.']'.$value.'[/'.$end.']'를 반환합니다
}
}
//테스트
echo '';
echo '