ubb
//ubbcode类
class ubbcode
{
var $nest; // 递归深度,for debug
//可处理标签及处理函数表
var $tags = array(
'url' => '$this->url',
'email' => '$this->email',
'mail' => '$this->email', // 为了容错,[mail]和等效
'img' => '$this->img',
'b' => '$this->simple',
'i' => '$this->simple',
'u' => '$this->simple',
'tt' => '$this->simple',
's' => '$this->simple',
'strike' => '$this->simple',
'h1' => '$this->simple',
'h2' => '$this->simple',
'h3' => '$this->simple',
'h4' => '$this->simple',
'h5' => '$this->simple',
'h6' => '$this->simple',
'sup' => '$this->simple',
'sub' => '$this->simple',
'em' => '$this->simple',
'strong' => '$this->simple',
'code' => '$this->simple',
'small' => '$this->simple',
'big' => '$this->simple',
'blink' => '$this->simple',
'fly' => '$this->fly',
'move' => '$this->move',
'glow' => '$this->CSSStyle',
'shadow' => '$this->CSSStyle',
'blur' => '$this->CSSStyle',
'wave' => '$this->CSSStyle',
'sub' => '$this->simple',
'sup' => '$this->simple',
'size' => '$this->size',
'face' => '$this->face',
'font' => '$this->face', // 为了容错,[font]和[face]等效
'color' => '$this->color',
'html' => '$this->html',
'quote' => '$this->quote',
'swf' => '$this->swf',
'upload' => '$this->upload'
);
function ubbcode()
{
$this->$nest= 0;
$this->$sLastModified= sprintf("%s", date("Y-m-j H:i", getlastmod()));
}
/***********************************************************************
* 对使用者输入的 E-Mail 作简单的检查,
* 检查使用者的 E-Mail 字串是否有 @ 字元,
* 在 @ 字元前有英文字母或数字,在之后有数节字串,
* 最后的小数点后只能有二个或三个英文字母。
* super@mail.wilson.gs 就可以通过检查,super@mail.wilson 就不能通过检查
************************************************************************/
function emailcheck($str)
{
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $str))
return true;
else
return false;
}
/***********************************************************************
* 对使用者输入的 URL 作简单的检查,
* 目前只能简单判断,不能自动检查fpt,finger等
************************************************************************/
function checkURL($str)
{
$bValidURL= true;
if (eregi("([a-z0-9-]+([\.][a-z0-9\-]+)+)", $str, $er_arr))
{
/*
printf ("0. %s
\n", $er_arr[0]);
printf ("1. %s
\n", $er_arr[1]);
printf ("2. %s
\n", $er_arr[2]);
printf ("3. %s
\n", $er_arr[3]);
printf ("4. %s
\n", $er_arr[4]);
*/
}
else
$bValidURL= false;
return $bValidURL;
}
/***********************************************************************
* 对使用者输入的 图片URL 作简单的检查,
* 目前只能简单判断结尾是否为图片文件
* 不支持由CGI动态生成的图片,比如计数器这类的
************************************************************************/
function checkImgURL($str)
{
if ($this->checkURL($str)) {
if(eregi("\.(jpeg|jpg|gif|bmp|png|pcx|tiff|tga|lwf)$", $str))
return true;
else
return false;
}
else
return false;
}
/***********************************************************************
* 自动补全URL部分,主要是协议前缀,
* 默认是htpp://,支持https://;ftp://;finger://;gopher://等
* 函数并不对URL的合法性作检查
************************************************************************/
function formatURL($str)
{
if (!eregi("^(ftp|http|https|mms|gopher|finger|bbs|telnet):(\/\/|\\\\)", $str))
$str= 'http://'.$str;
return $str;
}
//对$str进行UBB编码解析
function parse($str)
{
$nest ++;
$parse = ''.($str);
$ret = '';
while(true){
//查找[xx] 或者[xx=xx] , 但不包括[xx=]
$eregi_ret=eregi("\[([a-z][a-z0-9]{0,7})(=[a-zA-Z0-9#.:/&@|\?,%=_\+\"\']+)?\]", $parse, $eregi_arr);
if(!$eregi_ret)
{
$ret .= $parse;
break; //如果没有,返回
}
/* for Debug
else
{
printf ("$. %s
", $eregi_ret);
printf ("0. %s
", $eregi_arr[0]);
printf ("1. %s
", $eregi_arr[1]);
printf ("2. %s
", $eregi_arr[2]);
printf ("3. %s
", $eregi_arr[3]);
}
*/
$pos = @strpos($parse, $eregi_arr[0]); // 起始位置
$tag_start= $eregi_arr[1];
$tag= strtolower($eregi_arr[1]);
$tag_param= $eregi_arr[2];
$parse2 = substr($parse, 0, $pos);//标记之前
$parse = substr($parse, $pos + $eregi_ret);//标记之后
if(!isset($this->tags[$tag]))
{
$ret .= $parse2.'['.$tag_start.']';
continue; //如果是不支持的标记
}
//查找对应的结束标记
$eregi_ret=eregi("\[(/".$tag.")\]", $parse, $eregi_arr);
if(!$eregi_ret)
{
$ret .= $parse2.'['.$tag_start.$tag_param.']';
continue;//没有对应该的结束标记
}
$pos= strpos($parse, $eregi_arr[0]);
$value= substr($parse, 0, $pos); //起止标记之间的内容
$tag_end= $eregi_arr[1];
$parse= substr($parse, $pos + $eregi_ret);//结束标记之后的内容
// 允许嵌套标记,递归分析
if (!(($tag == 'code') or ($tag=="url") or ($tag=="email") or ($tag=="img"))){
$value= $this->parse($value);
}
$ret.= $parse2;
$parseFun= sprintf('$ret .= %s($tag_start, $tag_param, $tag_end, $value);', $this->tags[$tag]);
eval($parseFun);
}
$nest --;
return $ret;
}
/*****************************************************
* 简单替换,类似[b]变为
* 标签内容不便,只是替代括号为
*****************************************************/
function simple($start, $para, $end, $value){
if (strlen($para) > 0)
return sprintf("[%s%s]%s[%s]", $start, $para, $value, $end);
else
return sprintf("%s", $start, $value, $end);
}
/*****************************************************
* 如下认为合法可以没有“http://”;ftp一定要自己加“ftp://”
* 93611
*
* http://www.fogsun.com
*****************************************************/
function url($start, $para, $end, $value){
$sA= $value;
$sURL= substr(trim($para), 1);
if (strlen($sURL) > 0)
{
if (strlen($value) == 0)
$sA= $sURL;
}
else
{
$sURL= trim($value);
}
$sURL= $this->formatURL($sURL);
if($this->checkURL($sURL))
return "$sA";
else {
return sprintf("[%s%s]%s[%s]", $start, $para, $value, $end);
}
}
/*****************************************************
* 如下认为合法可以没有“mailto:”头;
* [email=pazee@21cn.com]pazee
*
* pazee@21cn.com
*****************************************************/
function email($start, $para, $end, $value){
$sA= $value;
$sURL= substr(trim($para), 1);
if (strlen($sURL) > 0)
{
if (strlen($value) == 0)
$sA= $sURL;
}
else
{
$sURL= trim($value);
}
//if (strtolower(substr($sURL, 0, 7)) != "mailto:")
$sURL= "mail.php?email=". $sURL;
if($this->emailcheck(substr($sURL, 15)))
return "$sA";
else
return sprintf("[%s%s]%s[%s]", $start, $para, $value, $end);
}
/*****************************************************
* 显示图片;如下用法认为合法
* [img=www.21cn.com/title.jpg][/img]
*
*****************************************************/
function img($start, $para, $end, $value){
$sURL= substr(trim($para), 1);
if (strlen($sURL) $sURL= trim($value);
//$sURL= $this->formatURL($sURL);
if ($this->checkImgURL($sURL))
return sprintf("", $sURL,$sURL);
else
return sprintf("[%s%s]%s[%s]", $start, $para, $value, $end);
}
/*****************************************************
* 字符串从右向左循环移动
* 无参数
* 等效与html的

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.