用正則寫一個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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章