PHPBB3.X论坛hash哈希值(形如在[img]标签增加了12zk6at9字符串的)过滤函数
例如http://www.11jn.com/jnwjz/topic.php?id=2285
但发现获取的帖子内容遇到有BBCODE标签,例如贴图的
这样的代码,在数据库的帖子内容表也发现存在12zk6at9字符串.
查了下,从http://cnc.phpbbchina.com/forum/viewtopic.php?f=25&t=3262得知:
[code]$this->bbcode_uid = substr(base_convert(unique_id(), 16, 36), 0, BBCODE_UID_LEN);[/code]
这只是一个随机的哈希值, 用于防止解析文章的BBCode时出现前后标签混淆的情况.
为了替换掉这个随机的哈希值,然后对贴图标签进行解析,又从PHPBB转phpwind论坛的转换程序中找到了下面的这个正则表达式函数
[code]function phpbb_ubb($content)
{
return preg_replace(array('/\[flash=(\d+?),(\d+?):[^]]+?\](.*?)\[\/flash[^]]+?\]/is','/\[\/?size[^]]+?\]/i','/\[wmv:[^]]+?\](.*?)\[\/wmv[^]]+?\]/is','/\[youtube:[^]]+?\](.*?)\[\/youtube[^]]+?\]/is','/\[audio:[^]]+?\](.*?)\[\/audio[^]]+?\]/is','/\[video:[^]]+?\](.*?)\[\/video[^]]+?\]/is','/\[img:[^]]+?\](.+?)\[\/img:.*?\]/i','/\[img2=[^]]+?\](.+?)\[\/img2.*?\]/i','/<!-- s([^ ]+?) --><img .*? \/><!-- s\\1 -->/ise', '/\[attachment=[^]]+?\].*?\[\/attachment:[^]]+?\]/is','/\[quote[^]]+?\](.*?)\[\/quote[^]]+?\]/is','/\[b:[^]]+?\](.*?)\[\/b[^]]+?\]/is','/\[u:[^]]+?\](.*?)\[\/u[^]]+?\]/is','/\[i:[^]]+?\](.*?)\[\/i[^]]+?\]/is','/\[list[^]]+?\](.*?)\[\/list[^]]+?\]/is','/\[code[^]]+?\](.*?)\[\/code[^]]+?\]/is','/\[color=([^:]+?):[^]]+?\](.*?)\[\/color:[^]]+?\]/is'),array('[flash=\\2,\\1,0]\\3[/flash]','','[wmv=314,256,0]\\1[/wmv]','[flash=314,256,0]\\1[/flash]','[wmv=0]\\1[/wmv]','[wmv=314,256,0]\\1[/wmv]','[img]\\1[/img]','[img]\\1[/img]',"newface('\\1')",'','[quote]\\1[/quote]','[b]\\1[/b]','[u]\\1[/u]','[i]\\1[/i]','[list=a][li]\\1[/li][/list]','[code]\\1[/code]','[color=\\1]\\2[/color]'),str_replace(array('[*]','[/*]'),'',$content));
}[/code]
使用方法,将上面的函数复制粘贴到你的PHP文件中,然后
查找[code]$message = censor_text($row['post_text']);[/code]
在后后面添加
[code]$message = phpbb_ubb($message);[/code]
将标签转换为HTM的代码
[code]$message = str_replace("[img]","<img src=",$message);
$message = str_replace("[/img]",">",$message);[/code]