用正则写一个UBB文本编辑器

我们来看一下UBB编辑器。这是网站当中经常用到的文本处理技术。因为使用UBB文件编辑器,我指定的格式才能存在。我不指定的格式,用户是无法在网站中展现的。

我们来看看效果:

<?php
$string='[b]为你写诗[/b]
[i]为你做不可能事[/i]
[u]哎呀,哥不是写情诗[/u]
[color=Red]哥是在说歌词[/color]
[size=7]吴克群[/size]
[qq]1378353651[/qq]';

//匹配UBB字符
$pattern=array(
	'/\[b\](.*)\[\/b\]/i',
	'/\[i\](.*)\[\/i\]/iU',
	'/\[u\](.*?)\[\/u\]/i',
	'/\[color=(.*?)\](.*?)\[\/color\]/',
	'/\[size=(\d)\](.*?)\[\/size\]/',
	'/\[qq\](\d{5,12})\[\/qq\]/',
	
	);

//需要替换的UBB字符
$replace=array(
	'<b>\\1</b><br />',
	'<i>\\1</i><br />',
	'<u>\\1</u><br />',
	'<font color="\\1">\\2</font><br />',
	'<font size="\\1">\\2</font><br />',
	'<a href="http://wpa.qq.com/msgrd?V=1&Uin=\\1&amp;Site=[Discuz!]&amp;Menu=yes"
 target="_blank"><img src="http://wpa.qq.com/pa?p=1:\\1:1" border="0"></a>',
	);

//使用正则匹配$string,将$string当中的值变为$replace的效果
$ubb=preg_replace($pattern,$replace,$string);

echo $ubb;
?>

实现的更高级,你可以让用户传过来的是form表单中的结果,让用户传值过来。

你转换输出成UBB格式。

哦耶,成功了!


preg_replace函数的使用

$str = 'April 15, 2003';
$pat = '/(\w+) (\d+), (\d+)/i';
$rep = '${1}1,$3';

preg_match($pat, $str, $res);
var_dump($res);

echo preg_replace($pat, $rep, $str);// April1,2003
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值