什么是UBB代码

UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方使用这个程序)采用的一种特殊的TAG。UBB代码很简单,虽然功能很少,但基本实现了我们常用的一些功能.就是在PHP文件中可以自己定义的一些代码,然后可以根据这些代码实行相应的在HTML中也能实现的功能。

优点

相对HTML安全性高

使用简单,方便记忆

自定义功能强大,扩展性好(可以根据自己的需求定义,但一般最好使用一个通用的标准,如url,img)

有效减少数据库存储代码

缺点

排版功能弱

不允许交叉使用

UBB代码运行过程

UBB代码->解析转换->HTML code

实际上是通过PHP的正则表达式的替换函数进行替换,最后得到UBB代码

UBB->DB->解析->输出

UBB->解析->DB->输出

介绍几种简单的UBB代码

UBB                                   正则                                   HTML

[url]  [/url]                /(

url

)(.*)(

\/url

)/i

[b] [/b]                    /(

b

)(.*)(

\/b

)/i

[img] [/img]               /(

img

)(.*)(

\/img

)/i          

写一个自己的UBB

function get_ubb($str) {

$str = preg_replace( "/(\[)em(.*?)(\])/i" , "", $str);

//链接UBB

$str = preg_replace( "/(\[url\])(.*)(\[\/url\])/i" , "", $str);

//QQ号码UBB

$str = preg_replace( "/\[qq\]([0-9]*)\[\/qq\]/i" , "" , $str);

//链接

$str = preg_replace( "/(\[b\])(.*)(\[\/b\])/i" , "\\2" ,$str);

//加粗

return $str;

}

if ($_POST['sub' ]){

echo get_ubb($_POST[message]);

}

?>

function inserttag(topen,tclose){

var themess = document.getElementById('con' );//编辑对象

themess.focus();

if (document.selection) {//如果是否ie浏览器

var theSelection = document.selection.createRange().text; //获取选区文字

//alert(theSelection);

if(theSelection){

document.selection.createRange().text = theSelection = topen+theSelection+tclose;//替换

} else{

document.selection.createRange().text = topen+tclose;

}

theSelection= '';

} else{ //其他浏览器

var scrollPos = themess.scrollTop;

var selLength = themess.textLength;

var selStart = themess.selectionStart; //选区起始点索引,未选择为0

var selEnd = themess.selectionEnd; //选区终点点索引

if (selEnd <= 2)

selEnd = selLength;

var s1 = (themess.value).substring(0,selStart); //截取起始点前部分字符

var s2 = (themess.value).substring(selStart, selEnd) //截取选择部分字符

var s3 = (themess.value).substring(selEnd, selLength); //截取终点后部分字符

themess.value = s1 + topen + s2 + tclose + s3; //替换

themess.focus();

themess.selectionStart = newStart;

themess.selectionEnd = newStart;

themess.scrollTop = scrollPos;

return;

}

}

script>

加粗  a>

QQ号  a>

超链接  a>

font>

textarea>

form>

php中简单ubb案例,PHP中开发自己的UBB代码相关推荐

  1. linux如何切换任务,linux 0.11中简单的任务切换中遇到的问题

    linux 0.11中简单的任务切换中遇到的问题 发布时间:2012-03-04 09:49:45来源:红联作者: 最近在学习linux0.11,用的是赵迥博士的一本书,其中有一个模仿Linus 当年 ...

  2. 中职校计算机案例教学法,中职计算机课程中案例教学法的应用研究

    摘 要:在教学中采用案例教学法,能够将教学的理论以及实际情况进行有效的优化整合,从而明确教学的目标,使得教学可以顺利的进行.案例教学法有其自身的应用优势,通过应用设置情境以及采用各种其他的方法来对学生 ...

  3. java中多线程编程案例_Java中多线程编程实战的实现线程_Java编程_Java程序员_课课家...

    java编程语言使多线程如此简单有效,以致于某些程序员说它实际上是自然的.尽管在 Java 中使用线程比在其他语言中要容易得多,仍然有一些概念需要掌握.要记住的一件重要的事情是 main() 函数也是 ...

  4. mysql数据表案例_mysql中库和表的简单操作案例

    mysql中库和表的简单操作案例 发布时间:2020-12-05 09:54:06 来源:亿速云 阅读:71 作者:小新 这篇文章主要介绍mysql中库和表的简单操作案例,文中介绍的非常详细,具有一定 ...

  5. 【Android开发】Android Studio中进行简单的WebView构建浏览器开发1

    [Android开发]Android Studio中进行简单的WebView构建浏览器开发 第一步:新建一个Android Project 第二步:修改AndroidMainfest.xml文件 第三 ...

  6. 【Android开发】Android Studio中进行简单的WebView构建浏览器开发2

    [[Android开发]Android Studio中进行简单的WebView构建浏览器开发2 第1步:在上一篇博客的基础上,修改activity_main.xml 第2步:在MainActivity ...

  7. Eclipse中使用Hadoop集群模式开发配置及简单程序示例(Windows下)

    Hadoop入门配置系列博客目录一览 1. Eclipse中使用Hadoop伪分布模式开发配置及简单程序示例(Linux下) 2. 使用Hadoop命令行执行jar包详解(生成jar.将文件上传到df ...

  8. 如何在微信小程序中生成二维码:一个最简单的案例就让你明白

    使用weapp.qrcode.js 在 微信小程序 中,快速生成二维码 一.效果 二.具体步骤.代码 下载weapp-qrcode代码 然后 将 dist 目录下的weapp.qrcode.esm.j ...

  9. 【阅读笔记】联邦学习实战——联邦学习在智能物联网中的应用案例

    联邦学习实战--联邦学习在智能物联网中的应用案例 前言 1. 案例背景与动机 2. 历史数据分析 3. 出行时间预测模型 3.1 问题定义 3.2 构造训练数据集 3.3 模型结构 4 联邦学习实现 ...

  10. 电磁仿真在EMC设计中的应用案例

    目录 前言 1 EMC仿真的意义 2 车载以太网仿真案例 2.1 车载以太网的EMC理论基础 2.2 车载以太网共模噪声的产生因素 2.3 车载以太网EMC建模方法 2.4 车载以太网CE的解决方案 ...

最新文章

  1. 控制服务器信息不存在或已删除,错误1075:依存服务不存在, 或已标记为删除的解决方法...
  2. Kinect for Windows V2 SDK+ VS2012 环境搭建
  3. zigbee学习之路(二)点亮LED
  4. exec和source命令的区别
  5. oracle ajax储存过程分页,创建 Oracle 分页存储过程
  6. 利用小工具instsrv和srvany 创建windows服务
  7. CentOS查看软件源提供的软件版本命令
  8. linux系统之间无密传输,scp采用无密码在两台linux服务器之间传输数据(示例代码)...
  9. eclips 创建 maven项目
  10. php[6491]: segfault at * rip * rsp * error 6
  11. 满满干货!邮储银行java面试
  12. 作业中关于H5中动画的实现——animation
  13. cutting stock 问题的列生成算法
  14. 【wanaflyCamp】电音之王
  15. Linux系统基础操作管理
  16. 靶机渗透练习07-HackMyVm Area51 (Log4j2复现)
  17. ASP.NET程序设计教程(C#版)——学习心得
  18. RK系列开发板音频驱动适配指南(一)
  19. 【云计算 | Openstack】KVM虚机通过dhcp自动获取地址
  20. LLVM | 编译器框架

热门文章

  1. ios protobuf java_iOS 集成Protobuf,转换proto文件
  2. 主席树入门+博客推荐
  3. Java二级练习试题一
  4. [零基础学python]为什么要开设本栏目
  5. python调用window dll和linux so例子
  6. 【Unity3D】计算二维向量夹角(-180到180)
  7. 可以运行的Oracle Advanced Queue的例子
  8. .NET发送邮件代码--測試通過
  9. UltraWebGrid两种显示样式
  10. NameNode DataNode