当前位置: 首页 > 图文教程 > 网络编程 > PHP > 一个用PHP实现的UBB类!

PHP
使用 php4 加速 web 传输
MYSQL中如何存取二进制文件
“在phpMyAdmin使用用户口令登陆”补充
几种显示数据的方法的比较
使用PHP制作新闻系统的思路
关于PHP中操作MySQL数据库的一些要注意的问题
不使用OCI8接口如何连接PHP和Oracle
php 之 没有mysql支持时的替代方案
用session代替apache服务器验证
php实现ping
PHP语句中or的用法
在Linux下安装PHP,APACHE,ORACLE,PERL的方法
一个非常精彩的日历程序
利用static实现表格的颜色隔行显示
php写的域名查询系统whois
用PHP制作的意见反馈表
针对初学PHP者的疑难问答
从C/C++迁移到PHP——判断字符类型的函数
几点提高php序运行效率的方法
Output Buffer (输出缓冲)函数的妙用

一个用PHP实现的UBB类!


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 322 ::
收藏到网摘: n/a

       <?php
  /*
  如有转载,请注明作者
  
  作者: 何志强
  文件: ubb.php
  备注: 说是改进,其实核心函数parse()已经完全重写了,而且思路也是不一样的。
  不过仍是受何志强的例子的启发,而且测试的例子还有URLCHECK等几个函数也是沿用的何志强的程序,谢谢何志强。
  目前还没有颜色的功能,但我会加入的。
  如果在程序上有什么BUG或不便的地方,请给我MAIL。
  谢谢!
  改进功能:
  对字符串进行UBB编码,该类目前只支持下列几个简单且实用的编码:
  1. URL裢接
  http://www.phpexe.com/
  http://头可以不需要
  如phpexe.com也是可以的。
  2. Email裢接
  [email protected]
  3. 图片裢接
  
  同URL链接一样,前面的http也可以不要。
  4. 文字方面
  粗体字
  斜体字
  加下划线
  
  1号标题字
  ...
  6号标题字
  
  
  
  [tt][/tt]
  [s][/s]
  
  [em][/em]
  [strong][/strong]
  [code][/code]
  [samp][/samp]
  [kbd][/kbd]
  [var][/var]
  [dfn][/dfn]
  [cite][/cite]
  
  
  
  注意以下几点:
  1. url,email,img等标签是不分大小写的.
  2. 在标签中不允许有TAB键出现,但空格允许。
  3. 该类要调用htmlencode,htmlencode4textarea,emailcheck函数和urlcheck类.
  4. 修改后支持嵌套,但url,email,img这三个标签不是允许嵌套的。
  技术资料:
  Ultimate Bulletin Board
  http://www.ultimatebb.com/
  What is UBB Code
  http://www.scriptkeeper.com/ubb/ubbcode.html
  */
  
  include("urlcheck.php");
  include("otherfunc.php"); //这两个文件的内容,附在最后。
  
  //ubbcode类
  class ubbcode{
  var $call_time=0;
  //可处理标签及处理函数对应表
  var $tags = array( //小写的标签 => 对应的处理函数
  'url' => '$this->url',
  'email' => '$this->email',
  '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',
  'samp' => '$this->simple',
  'kbd' => '$this->simple',
  'var' => '$this->simple',
  'dfn' => '$this->simple',
  'cite' => '$this->simple',
  'small' => '$this->simple',
  'big' => '$this->simple',
  'blink' => '$this->simple'
  );
  //url裢接属性
  var $attr_url;
  //url合法性检查对象
  var $urlcheck;
  
  function ubbcode($attr_url){
  $this->attr_url = ''.$attr_url;
  $this->urlcheck = new urlcheck();
  }
  
  //对$str进行UBB编码解析
  function parse($str){
  $this->call_time++;
  $parse = ''.htmlencode($str);
  
  $ret = '';
  while(true){
  $eregi_ret=eregi("\[[#]{0,1}[[:alnum:]]{