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

PHP
用PHP脚本在Linux系统上读取输入和对文
PHP中register_globals引发的问题
PHP基础:安全基础IIS 6的PHP最佳配置
Web开发基础知识分享:Php基础知识了解
实例解析:PHP程序开发中的中文编码问题
PHP5程序中新增加日期(date)函数的常量
新手学堂:PHP服务器变量设置的方法介绍
如何正确理解PHP程序错误信息的表示含义
PHP程序百行代码快速构建简易聊天室方法
如何使用PHP程序开发高效的WEB网络系统
加速PHP动态网站 关于MySQL索引分析优化
教你如何在SQL Server数据库中加密数据
用PHP程序直接调用文本文件内容实例
使用php的zlib压缩和解压缩swf文件
升级PHP5的理由:PHP4和PHP5性能对比
解决php存取mysql 4.1乱码问题
FC 5 php 不可以连接远程mysql数据库
一个特别好的学习PHP引用返回的例子
热门看点:PHP 6新版发布前新特性大展望
开源新版NetBeans让PHP开发变得更加轻松

一个用PHP实现的UBB类!


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 92 ::
收藏到网摘: 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:]]{