我的代码如下,为什么html转换ubb无效
$topic_id = "";
$article_id = "";
$uid = "1";
$title = isset($_POST['title']) ? $_POST['title'] : '';
$content = isset($_POST['content']) ? $_POST['content'] : '';
$content = strip_tags($content,'<img>,<p>,<strong>,<video>,<iframe>');//转换html代码
$content = preg_replace('/style=".*?"/', '', $content);
$content = preg_replace("/\s+/", " ", $content);
$content = preg_replace("/<[ ]+/si","<",$content); //过滤<__("<"号后面带空格)
//$content = preg_replace("'([\r\n])[\s]+'", " ", $content);
$content = preg_replace("/<(\w+)><\/\\1>/", "", $content);//过滤空白标签
$content = preg_replace("/(<img[^>]*\/>)/", "<br>\\1<br>", $content);//前后图片带br
$content = preg_replace("' '", "", $content);
$content = preg_replace("/class=.+?['|\"]/i",'',$content);
$content = eregi_replace(quotemeta("[b]"),quotemeta("<b>"),$content);
$content = eregi_replace(quotemeta("[/b]"),quotemeta("</b>"),$content);
$content = eregi_replace(quotemeta("[u]"),quotemeta("<u>"),$content);
$content = eregi_replace(quotemeta("[/u]"),quotemeta("</u>"),$content);
$content = eregi_replace(quotemeta("[br]"),quotemeta("<br>"),$content);
$content = eregi_replace(quotemeta("[/br]"),quotemeta("</br>"),$content);
$content = eregi_replace(quotemeta("[strong]"),quotemeta("<strong>"),$content);
$content = eregi_replace(quotemeta("[/strong]"),quotemeta("</strong>"),$content);
$content = eregi_replace(quotemeta("[img]"),quotemeta("<img>"),$content);
$content = eregi_replace(quotemeta("[/img]"),quotemeta("</img>"),$content);
$content = eregi_replace(quotemeta("[iframe]"),quotemeta("<iframe>"),$content);
$content = eregi_replace(quotemeta("[/iframe]"),quotemeta("</iframe>"),$content);
$content = eregi_replace(quotemeta("[p]"),quotemeta("<p>"),$content);
$content = eregi_replace(quotemeta("[/p]"),quotemeta("</p>"),$content);
求解,需要怎么写才能将html转换成ubb代码
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不明白你为啥要用
eregi_replace,preg_replace不好吗而且
eregi_replace的第一个参数是搜索模式,第二个参数是替换的内容。你搜索UBB代码替换成HTML代码,怎么能把HTML转换成UBB呢。再一个,没有
</img>、</br>这种HTML代码,据我所知也没有[p]、[\p]这种UBB代码,不知道你是自己有一套规则还是怎样。先把你的这些问题解决了再来看为什么不能工作吧。
数据库存储的是bbcode,输出HTML时需要把bbcode转换成HTML.
用户需要重新编辑内容时,仍然是输出数据库里的bbcode.
也就是说,楼主把HTML转成bbcode的逻辑是很少见的.
对于简单的bbcode转HTML,只需要
str_replace即可:注意:str_replace不能保证成对转换.
bbcode的多种标签的解析还是比较复杂的,需要用到不少正则表达式,而且在转成HTML时仍然需要格外注意XSS注入攻击,建议楼主看看PunBB/FluxBB的
/include/parser.php里的bbcode相关的解析操作,可以作为PHP正则表达式的一个学习和应用实例.