Well here you go, the crappiest XHTM->BBCode parser ever.
Code: Select all
///////////////////////////////////////////////////////
// XHTM_BBCode : Converts most BBCode to valid XHTML or just butchers the code mercilessly
function XHTM_BBCode($in){
while(preg_match("/\[b\](.+?)\[\/b\]/i",$in,$out)){$in=str_replace($out[0],"<b>".$out[1]."</b>",$in);}
while(preg_match("/\[i\](.+?)\[\/i\]/i",$in,$out)){$in=str_replace($out[0],"<i>".$out[1]."</i>",$in);}
while(preg_match("/\[u\](.+?)\[\/u\]/i",$in,$out)){$in=str_replace($out[0],"<u>".$out[1]."</u>",$in);}
while(preg_match("/\[url=(.+?)\](.+?)\[\/url\]/i",$in,$out)){$in=str_replace($out[0],"<a href=\"".$out[1]."\">".$out[2]."</a>",$in);}
// IYAA! I hate to do all these with <span>s
while(preg_match("/\[quote:.+?=\"(.+?)\"\](.+?)\[\/quote\]/i",$in,$out)){$in=str_replace($out[0],"<br/><span class=\"quote\">".$out[1]." wrote:<span class=\"quotetxt\">".$out[2]."</span></span>",$in);}
while(preg_match("/\[quote\](.+?)\[\/quote\]/i",$in,$out)){$in=str_replace($out[0],"<br/><span class=\"quote\">Quote:<span class=\"quotetxt\">".$out[1]."</span></span>",$in);}
while(preg_match("/\[code\](.+?)\[\/code\]/i",$in,$out)){$in=str_replace($out[0],"<br/><span class=\"quote\">Code:<span class=\"code\">".str_replace(" "," ",$out[1])."</span></span>",$in);}
// GAH! Lists!
while(preg_match("/\[\*\](.+?)\[\*\]/i",$in,$out)){$in=str_replace($out[0],"<li>".$out[1]."</li>[*]",$in);}
while(preg_match("/\[\*\](.+?)\[\/list\]/i",$in,$out)){$in=str_replace($out[0],"<li>".$out[1]."</li>[/list]",$in);}
while(preg_match("/\[list\](.+?)\[\/list\]/i",$in,$out)){$in=str_replace($out[0],"<ul>".str_replace("<br/>","",$out[1])."</ul>",$in);}
$in = str_replace("<ul></li>","<ul>",$in); // nested lists quirk #1
while(preg_match("/<br\/><ul>(.+?)<\/ul>\s/i",$in,$out)){$in=str_replace($out[0],"</p><ul>".$out[1]."</ul><p>\n",$in);} // DIRTIEST HACK EVER
return $in;
}
Someone PLEASE submit an alternative!