网上一直没找到合适的bbcode解析类
所以东抄西抄的做了一个
但是出现两问题了,请各位高手协助一下。
代码在最下
问题一:bbcode解析时遇到
不做任何处理...比如表情/其他bbcode等不转义问题二:如何过滤HTML?
我用BBCODE保存资料就是不想用户用HTML.....
但我测试时...发现如何手动输入:
<p style="color:red">dddd</p>
竟然能真的有效
所以如果是插入一些js或者iframe应该也是可以的吧?
有什么方法可方止?
下面提供整个class 代码, 刚开始, 东抄西抄组装,还没优化好,请见谅
<?php
class BBCode {
public function __construct(){}
private function showBBcodes($text) {
// BBcode array
$find = array(
'~[b](.*?)[/b]~s',
'~[i](.*?)[/i]~s',
'~[u](.*?)[/u]~s',
'~[quote](.*?)[/quote]~s',
'~[table](.*?)[/table]~s',
'~[tr](.*?)[/tr]~s',
'~[td](.*?)[/td]~s',
'~[justify](.*?)[/justify]~s',
'~[center](.*?)[/center]~s',
'~[right](.*?)[/right]~s',
'~[left](.*?)[/left]~s',
'~[size=(.*?)](.*?)[/size]~s',
'~[color=(.*?)](.*?)[/color]~s',
'~[font=(.*?)](.*?)[/font]~s',
'~[url=((?:ftp|https?)://.*?)](.*?)[/url]~s',
'~[img](https?://.*?.(?:jpg|jpeg|gif|png|bmp))[/img]~s',
'/[img=(d+)x(d+)](.*?)[/img]/is',
'~[youtube](.*?)[/youtube]~s',
);
// HTML tags to replace BBcode
$replace = array(
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<pre>$1</'.'pre>',
'<table>$1</table>',
'<tr>$1</tr>',
'<td>$1</td>',
'<p align="justify">$1</p>',
'<p align="center">$1</p>',
'<p align="right">$1</p>',
'<p align="left">$1</p>',
'<span class="h$1">$2</span>',
'<span style="color:$1;">$2</span>',
'<span style="font:$1;">$2</span>',
'<a href="$1" target="_blank" rel="nofollow">$2</a>',
'<img src="$1" alt=""/>',
'<img width="$1" height="$2" src="$3" alt="" />',
'<iframe width="560" height="315" src="http://www.youtube.com/embed/$1?wmode=opaque" data-youtube-id="$1" frameborder="0" allowfullscreen=""></iframe>'
);
return nl2br(preg_replace($find,$replace,$text));
}
//表情转义
private function parseSmiley($text){
// Smiley to image
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群