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

PHP
PHP XML操作类DOMDocument
php jquery 实现新闻标签分类与无刷新分页
php 来访国内外IP判断代码并实现页面跳转
php 计算两个时间戳相隔的时间的函数(小时)
php 日期时间处理函数小结
PHP strtotime函数详解
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
php 空格,换行,跳格使用说明
c#中的实现php中的preg_replace
PHP 分页原理分析,大家可以看看
php 8小时时间差的解决方法小结
PHP 源代码压缩小工具
php 常用类整理
在PHP中检查PHP文件是否有语法错误的方法
PHP simple_html_dom.php+正则 采集文章代码
PHP array_push 数组函数
php 文章采集正则代码
php 需要掌握的东西 不做浮躁的人
phpMyAdmin链接MySql错误 个人解决方案
PHP 获取目录下的图片并随机显示的代码

一个用PHP实现的UBB类!


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