·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

取post表中的message字段内容时,如何清除掉里面的bbcode?

206 2
发表于 2023-2-22 07:36:40 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
因为要生成帖子摘要,得取post表中的message字段内容。但message如果没有处理的话,里面存在大量的bbcode,如flash:[flash=480,370],附件:,字体:<div align="left"><font style="background-color:white"><font face="黑体">等等,这种bbcode与帖子内容无关,需要屏蔽掉,请问有什么好的办法?有系统原生函数支持屏蔽这些bbcode吗?

我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-17 01:30:13 | 查看全部
在Discuz中,`message`字段存储的是帖子内容,其中可能包含BBCode(如``、``、`[url]`等)。为了生成帖子摘要,你需要清除这些BBCode,只保留纯文本内容。

Discuz提供了一个系统函数 `strip_bbcode()`,可以用来去除BBCode。你可以使用这个函数来处理`message`字段的内容。

### 示例代码
  1. // 假设你已经从数据库中获取到了message字段的内容
  2. $message = $post['message'];

  3. // 使用strip_bbcode函数去除BBCode
  4. $message = strip_bbcode($message);

  5. // 现在$message中只包含纯文本内容,可以用于生成摘要
  6. echo $message;
复制代码


### 解释
- `strip_bbcode()` 是Discuz内置的函数,专门用于去除字符串中的BBCode。
- 这个函数会移除所有BBCode标签,只保留纯文本内容。

### 其他注意事项
- 如果你还需要进一步处理内容(比如去除HTML标签、截取指定长度的摘要等),可以在去除BBCode之后再进行这些操作。
- 如果你需要保留某些特定的BBCode(比如链接),你可能需要自定义处理逻辑,而不是直接使用`strip_bbcode()`。

### 自定义处理
如果你有特殊需求,比如保留某些BBCode,可以手动处理字符串。例如:
  1. $message = preg_replace('/\[(?!url|img)[^\]]+\]/', '', $message);
复制代码

这个正则表达式会移除除了`[url]`和`[img]`之外的所有BBCode。

### 总结
使用`strip_bbcode()`函数是最简单和直接的方法来去除BBCode。如果你有特殊需求,可以通过正则表达式或其他方法进行自定义处理。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-21 01:50:46 | 查看全部
在Discuz中,`message`字段存储的是帖子内容,其中可能包含BBCode(如``、``、`[url]`等)。为了生成帖子摘要,你需要清除这些BBCode,只保留纯文本内容。

Discuz提供了一个系统函数 `discuzcode`,可以用来处理BBCode。你可以使用 `discuzcode` 函数来解析并清除BBCode。以下是一个示例代码,展示如何清除 `message` 字段中的BBCode:

  1. // 假设你已经从数据库中获取到了message字段的内容
  2. $message = $post['message'];

  3. // 使用discuzcode函数处理BBCode
  4. $message = discuzcode($message, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1);

  5. // 清除HTML标签,只保留纯文本
  6. $message = strip_tags($message);

  7. // 输出处理后的内容
  8. echo $message;
复制代码


### 代码解释:
1. **`discuzcode` 函数**:这个函数是Discuz内置的BBCode解析函数。通过设置不同的参数,你可以控制是否解析BBCode、是否解析表情、是否解析URL等。在这个例子中,我们将所有参数设置为 `1`,表示解析所有的BBCode。
   
2. **`strip_tags` 函数**:这个PHP内置函数用于清除HTML标签,确保最终输出的内容是纯文本。

### 参数说明:
- `discuzcode` 函数的参数依次为:
  - `$message`: 要处理的字符串。
  - `$smileyoff`: 是否关闭表情解析(0表示解析表情,1表示不解析)。
  - `$bbcodeoff`: 是否关闭BBCode解析(0表示解析BBCode,1表示不解析)。
  - `$htmlon`: 是否允许HTML标签(0表示不允许,1表示允许)。
  - `$allowsmilies`: 是否允许表情(0表示不允许,1表示允许)。
  - `$allowbbcode`: 是否允许BBCode(0表示不允许,1表示允许)。
  - `$allowimgcode`: 是否允许图片代码(0表示不允许,1表示允许)。
  - `$allowhtml`: 是否允许HTML(0表示不允许,1表示允许)。
  - `$parsetype`: 解析类型(0表示普通解析,1表示强制解析)。
  - `$authorid`: 作者ID。
  - `$allowmediacode`: 是否允许媒体代码(0表示不允许,1表示允许)。

通过这种方式,你可以清除 `message` 字段中的BBCode,并生成一个干净的帖子摘要。

如果你需要进一步处理或过滤特定的BBCode,可以根据需求调整 `discuzcode` 函数的参数,或者使用正则表达式进行自定义过滤。

希望这个解答对你有帮助!如果你有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.216.67.249,GMT+8, 2025-5-2 03:43 , Processed in 0.418426 second(s), 75 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表