查看: 98|回复: 6

[教程] 分享一个将帖子中的br换成P

[复制链接]

3

主题

8

回帖

0

积分

积极分子

金币
8
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-4-16
发表于 2025-2-7 18:07:19 | 显示全部楼层 |阅读模式


用AI弄的,不懂代码,弄了好几天
  1. <?php

  2. if (!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_identifier {

  6.     function discuzcode($value) {
  7.         global $_G;

  8.         if ($value['caller'] == 'discuzcode' && isset($_G['discuzcodemessage'])) {

  9.             // 获取要处理的内容
  10.             $thread_message = $_G['discuzcodemessage'];

  11.             // 第一步:移除所有的 <br> 标签
  12.             $thread_message = preg_replace('/<br\s*\/?>/', '', $thread_message); // 先把 <br> 标签移除

  13.             // 第二步:将所有换行符替换为统一的段落分隔符 <p></p>
  14.             $thread_message = preg_replace('/\n+/', '</p><p>', $thread_message);

  15.             // 第三步:确保每个段落都包裹在 <p></p> 标签中
  16.             $thread_message = '<p>' . $thread_message . '</p>';

  17.             // 第四步:移除每个 <p> 标签中如果仅有 <br> 标签的情况
  18.             $thread_message = preg_replace('/<p>\s*<br\s*\/?>\s*<\/p>/', '', $thread_message); // 如果 <p> 标签中只有 <br> 标签,去除空段落

  19.             // 第五步:移除段落内多余的空白或 <br> 标签
  20.             $thread_message = preg_replace('/<p>\s*(<br\s*\/?>\s*)*<\/p>/', '<p></p>', $thread_message); // 如果段落内有多余的 <br> 标签,替换为空段落

  21.             // 最后:处理去掉所有的多余换行符
  22.             $thread_message = preg_replace('/\s+/', '', $thread_message); // 移除多余空格或换行符

  23.             //如果要强行将所有空行删除,取消注释下面这行
  24.             //$thread_message = preg_replace('/<p>\s*<\/p>/', '', $thread_message); //除多余的空 <p></p> 标签

  25.             // 最终存储处理后的内容
  26.             $_G['discuzcodemessage'] = $thread_message;
  27.         }
  28.     }
  29. }
  30. ?>
将里面的
  1. if ($value['caller'] == 'discuzcode' && isset($_G['discuzcodemessage'])) {
这段放到你的脚本里面,插件根目录xxx.class.php这个,每次换行都会加一个p标签,需要自行给P标签添加样式,比如.t_fsz p {margin: 16px 0; line-height: 26px;}这个需要自行修改测试,plugin_identifier是插件标识哈。


如果要强制将帖子里所有的空行移除的话。
  1. //如果要强行将所有空行删除,取消注释下面这行
  2.             //$thread_message = preg_replace('/<p>\s*<\/p>/', '', $thread_message); //除多余的空 <p></p> 标签
将这段取消注释


都5025年了,这种低级问题该改喽。

本帖, 最后, 波多, 野结, 2025-2-7
回复

使用道具 举报

3

主题

8

回帖

0

积分

积极分子

金币
8
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-4-16
 楼主| 发表于 2025-2-7 18:12:09 | 显示全部楼层
楼上说错了

应该是将
  1. function discuzcode($value) {
这段放在脚本文件里
回复

使用道具 举报

3

主题

8

回帖

0

积分

积极分子

金币
8
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-4-16
 楼主| 发表于 2025-2-7 18:31:19 | 显示全部楼层
  1. <?php

  2. if (!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class mobileplugin_identifier{

  6.     // 换帖子中的BR替换成P标签
  7.     function discuzcode($value) {
  8.       global $_G;

  9.       if ($value['caller'] == 'discuzcode' && isset($_G['discuzcodemessage'])) {

  10.           // 获取要处理的内容
  11.           $thread_message = $_G['discuzcodemessage'];

  12.           // 第一步:移除所有的 <br> 标签
  13.           $thread_message = preg_replace('/<br\s*\/?>/', '', $thread_message); // 先把 <br> 标签移除

  14.           // 第二步:将所有换行符替换为统一的段落分隔符 <p></p>
  15.           $thread_message = preg_replace('/\n+/', '</p><p>', $thread_message);

  16.           // 第三步:确保每个段落都包裹在 <p></p> 标签中
  17.           $thread_message = '<p>' . $thread_message . '</p>';

  18.           // 第四步:移除每个 <p> 标签中如果仅有 <br> 标签的情况
  19.           $thread_message = preg_replace('/<p>\s*<br\s*\/?>\s*<\/p>/', '', $thread_message); // 如果 <p> 标签中只有 <br> 标签,去除空段落

  20.           // 第五步:移除段落内多余的空白或 <br> 标签
  21.           $thread_message = preg_replace('/<p>\s*(<br\s*\/?>\s*)*<\/p>/', '<p></p>', $thread_message); // 如果段落内有多余的 <br> 标签,替换为空段落

  22.           // 最后:处理去掉所有的多余换行符
  23.           $thread_message = preg_replace('/\s+/', '', $thread_message); // 移除多余空格或换行符

  24.           //如果要强行将所有空行删除,取消注释下面这行
  25.           //$thread_message = preg_replace('/<p>\s*<\/p>/', '', $thread_message); //除多余的空 <p></p> 标签

  26.           // 最终存储处理后的内容
  27.           $_G['discuzcodemessage'] = $thread_message;
  28.       }
  29.   }
  30. }
  31. ?>
这个是手机版插件里面的



回复

使用道具 举报

3

主题

8

回帖

0

积分

积极分子

金币
8
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-4-16
 楼主| 发表于 2025-2-7 18:33:11 | 显示全部楼层
我的帖子都不会要求大家强行回复的哦
回复

使用道具 举报

3

主题

64

回帖

0

积分

积极分子

金币
64
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-1-16
发表于 2025-2-8 13:05:20 | 显示全部楼层
牛逼可拉屎
回复

使用道具 举报

0

主题

67

回帖

0

积分

积极分子

金币
67
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-7-11
发表于 2025-2-8 21:28:26 | 显示全部楼层
分享是厚道,可是你这写了这么多,我还看不出来用在啥地方,实现啥效果。
回复

使用道具 举报

0

主题

9

回帖

0

积分

积极分子

金币
9
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-3-10
发表于 2025-10-5 20:56:58 | 显示全部楼层
好多多余的p标签啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部