php如何将html转成ubb
黄舟
黄舟 2017-04-11 09:40:01
[PHP讨论组]

我的代码如下,为什么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("'&nbsp;'", "", $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代码

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
怪我咯

不明白你为啥要用eregi_replacepreg_replace不好吗

而且eregi_replace的第一个参数是搜索模式,第二个参数是替换的内容。你搜索UBB代码替换成HTML代码,怎么能把HTML转换成UBB呢。

再一个,没有</img></br>这种HTML代码,据我所知也没有[p][\p]这种UBB代码,不知道你是自己有一套规则还是怎样。

先把你的这些问题解决了再来看为什么不能工作吧。

高洛峰

数据库存储的是bbcode,输出HTML时需要把bbcode转换成HTML.
用户需要重新编辑内容时,仍然是输出数据库里的bbcode.
也就是说,楼主把HTML转成bbcode的逻辑是很少见的.

对于简单的bbcode转HTML,只需要str_replace即可:

<?php
echo str_replace(
    array('[b]', '[/b]', '[i]', '[/i]'), 
    array('<strong>', '</strong>', '<i>', '</i>'), 
    '[i][b]加粗并倾斜[/b][/i]'
);
//输出 <i><strong>加粗并倾斜</strong></i>

注意:str_replace不能保证成对转换.

bbcode的多种标签的解析还是比较复杂的,需要用到不少正则表达式,而且在转成HTML时仍然需要格外注意XSS注入攻击,建议楼主看看PunBB/FluxBB的/include/parser.php里的bbcode相关的解析操作,可以作为PHP正则表达式的一个学习和应用实例.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号