最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

bbcode解析时遇见的两个有关问题

来源:http://erdangjiade.com/topic/79478.html 你好,世界。 2017-10-04 21:03浏览(1)

bbcode解析时遇见的两个问题!

本帖最后由 sky94132003 于 2014-10-08 01:28:06 编辑

网上一直没找到合适的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

评论0
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

1 2