<?php
function html2ubb($str)
{
$str = str_replace("/n",'',$str);
$str = preg_replace("//<A[^>]+HREF=/"([^/"]+)/"[^>]*/>(.*?)<//a/>/i","[url=$1]$2[/url]",$str);
$str = preg_replace("//<font(.*?)color=/"#([^ >]+)/"(.*?)/>(.*?)<//font>/i","<font$1$3>[color=$2]$4[/color]</font>",$str);
$str = preg_replace("//<font(.*?)face=/"([^ >]+)/"(.*?)/>(.*?)<//font>/i","<font$1$3>[face=$2]$4[/face]</font>",$str);
$str = preg_replace("//<font(.*?)size=/"([^ >]+)/"(.*?)/>(.*?)<//font>/i","[size=$2]$4[/size]",$str);
$str = preg_replace("//<img[^>]+src=/"([^/"]+)/"[^>]*/>/i","[img]$1[/img]",$str);
$str = preg_replace("//<DIV[^>]+ALIGN=/"([^/"]+)/"[^>]*/>(.*?)<//DIV/>/i","[align=$1]$2[/align]",$str);
$str = preg_replace("//<([//]?)u/>/i","[$1u]",$str);
$str = preg_replace("//<([//]?)em/>/i","[$1I]",$str);
$str = preg_replace("//<([//]?)strong/>/i","[$1b]",$str);
$str = preg_replace("//<([//]?)b(.*?)/>/i","[$1b]",$str);
$str = preg_replace("//<([//]?)i/>/i","[$1i]",$str);
$str = preg_replace("/<[^>]*?>/i","",$str);
return $str;
}
?>
<?php
function ubb2html($sUBB)
{
$sHtml=$sUBB;
$sHtml=preg_replace("/</",'<',$sHtml);
$sHtml=preg_replace("/>/",'>',$sHtml);
$sHtml=preg_replace("//r?/n/",'<br />',$sHtml);
$sHtml=preg_replace("//[(//?)(b|u|i|s|sup|sub)/]/i",'<$1$2>',$sHtml);
$sHtml=preg_replace("//[color/s*=/s*([^/]]+?)/]/i",'<span style="color:$1;">',$sHtml);
function getSizeName($match)
{
$arrSize=array('8pt','10pt','12pt','14pt','18pt','24pt','36pt');
return '<span style="font-size:'.$arrSize[$match[1]-1].';">';
}
$sHtml=preg_replace_callback("//[size/s*=/s*(/d+?)/]/i",'getSizeName',$sHtml);
$sHtml=preg_replace("//[font/s*=/s*([^/]]+?)/]/i",'<span style="font-family:$1;">',$sHtml);
$sHtml=preg_replace("//[back/s*=/s*([^/]]+?)/]/i",'<span style="background-color:$1;">',$sHtml);
$sHtml=preg_replace("//[//(color|size|font|back)/]/i",'</span>',$sHtml);
for($i=0;$i<3;$i++)$sHtml=preg_replace("//[align/s*=/s*([^/]]+?)/](((?!/[align(?:/s+[^/]]+)?/])[/s/S])*?)/[//align/]/",'<p align="$1">$2</p>',$sHtml);
$sHtml=preg_replace("//[img/]/s*([/s/S]+?)/s*/[//img/]/i",'<img src="$1" />',$sHtml);
function getImg($match)
{
$p1=$match[1];$p2=$match[2];$p3=$match[3];$src=$match[4];
$a=$p3?$p3:($p2?$p1:'');
return '<img src="'.$src.'"'.($p2?' width="'.$p1.'" height="'.$p2.'"':'').($a?' align="'.$a.'"':'').' />';
}
$sHtml=preg_replace_callback("//[img/s*=(?:/s*(/d+)/s*,/s*(/d+)/s*)?(?:,?/s*(/w+)/s*)?/]/s*([/s/S]+?)/s*/[//img/]/i",'getImg',$sHtml);
$sHtml=preg_replace("//[url/]/s*([/s/S]+?)/s*/[//url/]/i",'<a href="$1">$1</a>',$sHtml);
$sHtml=preg_replace("//[url/s*=/s*([^/]/s]+?)/s*/]/s*([/s/S]+?)/s*/[//url/]/i",'<a href="$1">$2</a>',$sHtml);
$sHtml=preg_replace("//[email/]/s*([/s/S]+?)/s*/[//email/]/i",'<a href="mailto:$1">$1</a>',$sHtml);
$sHtml=preg_replace("//[email/s*=/s*([^/]/s]+?)/s*/]/s*([/s/S]+?)/s*/[//email/]/i",'<a href="mailto:$1">$2</a>',$sHtml);
$sHtml=preg_replace("//[quote/]([/s/S]*?)/[//quote/]/i",'<blockquote>$1</blockquote>',$sHtml);
$sHtml=preg_replace("//[code/]([/s/S]*?)/[//code/]/i",'<code>$1</code>',$sHtml);
function getFlash($match)
{
$w=$match[1];$h=$match[2];$url=$match[3];
if(!$w)$w=550;if(!$h)$h=400;
return '<embed type="application/x-shockwave-flash" src="'.$url.'" wmode="opaque" quality="high" bgcolor="#ffffff" menu="false" play="true" loop="true" width="'.$w.'" height="'.$h.'"/>';
}
$sHtml=preg_replace_callback("//[flash/s*(?:=/s*(/d+)/s*,/s*(/d+)/s*)?/]([/s/S]+?)/[//flash/]/i",'getFlash',$sHtml);
function getMedia($match)
{
$w=$match[1];$h=$match[2];$play=$match[3];$url=$match[4];
if(!$w)$w=550;if(!$h)$h=400;
return '<embed type="application/x-mplayer2" src="'.$url.'" enablecontextmenu="false" autostart="'.($play=='1'?'true':'false').'" width="'.$w.'" height="'.$h.'"/>';
}
$sHtml=preg_replace_callback("//[media/s*(?:=/s*(/d+)/s*,/s*(/d+)/s*(?:,/s*(/d+)/s*)?)?/]([/s/S]+?)/[//media/]/i",'getMedia',$sHtml);
function getTable($match)
{
$w=$match[1];$b=$match[2];
$str='<table';
if($w)$str.=' width="'.$w.'"';
if($b)$str.=' bgcolor="'.$b.'"';
return $str.'>';
}
$sHtml=preg_replace_callback("//[table(?:/s*=/s*(/d{1,4}%?)/s*(?:,/s*([^/]]+)/s*)?)?]/i",'getTable',$sHtml);
function getTR($match){return '<tr'.($match[1]?' bgcolor="'.$match[1].'"':'').'>';}
$sHtml=preg_replace_callback("//[tr(?:/s*=(/s*[^/]]+))?/]/i",'getTR',$sHtml);
function getTD($match){
$col=$match[1];$row=$match[2];$w=$match[3];
return '<td'.($col>1?' colspan="'.$col.'"':'').($row>1?' rowspan="'.$row.'"':'').($w?' width="'.$w.'"':'').'>';
}
$sHtml=preg_replace_callback("//[td(?:/s*=/s*(/d{1,2})/s*,/s*(/d{1,2})/s*(?:,/s*(/d{1,4}%?))?)?/]/i",'getTD',$sHtml);
$sHtml=preg_replace("//[//(table|tr|td)/]/i",'</$1>',$sHtml);
$sHtml=preg_replace("//[/*/]([^/[]+)/i",'<li>$1</li>',$sHtml);
function getUL($match)
{
$str='<ul';
if($match[1])$str.=' type="'.$match[1].'"';
return $str.'>';
}
$sHtml=preg_replace_callback("//[list(?:/s*=/s*([^/]]+)/s*)?/]/i",'getUL',$sHtml);
$sHtml=preg_replace("//[//list/]/i",'</ul>',$sHtml);
return $sHtml;
}
?>