波多野结衣 發表於 2025-2-7 18:07:19

分享一个将帖子中的br换成P

<br /><br />用AI弄的,不懂代码,弄了好几天<br /><ol><li>&lt;?php<br /><li><br /><li>if (!defined('IN_DISCUZ')) {<br /><li>&nbsp; &nbsp; exit('Access Denied');<br /><li>}<br /><li><br /><li>class plugin_identifier {<br /><li><br /><li>&nbsp; &nbsp; function discuzcode($value) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if ($value['caller'] == 'discuzcode' &amp;&amp; isset($_G['discuzcodemessage'])) {<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 获取要处理的内容<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = $_G['discuzcodemessage'];<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 第一步:移除所有的 &lt;br&gt; 标签<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = preg_replace('/&lt;br\s*\/?&gt;/', '', $thread_message); // 先把 &lt;br&gt; 标签移除<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 第二步:将所有换行符替换为统一的段落分隔符 &lt;p&gt;&lt;/p&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = preg_replace('/\n+/', '&lt;/p&gt;&lt;p&gt;', $thread_message); <br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 第三步:确保每个段落都包裹在 &lt;p&gt;&lt;/p&gt; 标签中<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = '&lt;p&gt;' . $thread_message . '&lt;/p&gt;';<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 第四步:移除每个 &lt;p&gt; 标签中如果仅有 &lt;br&gt; 标签的情况<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = preg_replace('/&lt;p&gt;\s*&lt;br\s*\/?&gt;\s*&lt;\/p&gt;/', '', $thread_message); // 如果 &lt;p&gt; 标签中只有 &lt;br&gt; 标签,去除空段落<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 第五步:移除段落内多余的空白或 &lt;br&gt; 标签<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = preg_replace('/&lt;p&gt;\s*(&lt;br\s*\/?&gt;\s*)*&lt;\/p&gt;/', '&lt;p&gt;&lt;/p&gt;', $thread_message); // 如果段落内有多余的 &lt;br&gt; 标签,替换为空段落<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 最后:处理去掉所有的多余换行符<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$thread_message = preg_replace('/\s+/', '', $thread_message); // 移除多余空格或换行符<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//如果要强行将所有空行删除,取消注释下面这行<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//$thread_message = preg_replace('/&lt;p&gt;\s*&lt;\/p&gt;/', '', $thread_message); //除多余的空 &lt;p&gt;&lt;/p&gt; 标签<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 最终存储处理后的内容<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$_G['discuzcodemessage'] = $thread_message;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp; }<br /><li>}<br /><li>?&gt;<br /><li></ol>将里面的<br /><ol><li>if ($value['caller'] == 'discuzcode' &amp;&amp; isset($_G['discuzcodemessage'])) {</ol>这段放到你的脚本里面,插件根目录xxx.class.php这个,每次换行都会加一个p标签,需要自行给P标签添加样式,比如.<font face="consolas, lucida console, courier new, monospace"><font color="#1f1f1f"><font style="font-size:12px">t_fsz p {margin: 16px 0; line-height: 26px;}这个需要自行修改测试,</font></font></font><font face="consolas, lucida console, courier new, monospace"><font color="#1f1f1f"><font style="font-size:12px">plugin_identifier是插件标识哈。</font></font></font><br /><img title="QQ20250207-175927.png" id="aimg_34339" aid="34339" src1="static/image/common/none.gif" zoom="https://www.dismall.com/data/attachment/forum/202502/07/175942v56ief2106d9c16h.png" src="https://www.dismall.com/data/attachment/forum/202502/07/175942v56ief2106d9c16h.png" class="zoom" onclick="zoom(this, this.src, 0, 0, 0)" width="600" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" /><br /><br />如果要强制将帖子里所有的空行移除的话。<br /><ol><li>//如果要强行将所有空行删除,取消注释下面这行<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//$thread_message = preg_replace('/&lt;p&gt;\s*&lt;\/p&gt;/', '', $thread_message); //除多余的空 &lt;p&gt;&lt;/p&gt; 标签</ol>将这段取消注释<br /><img title="QQ20250207-180047.png" id="aimg_34340" aid="34340" src1="static/image/common/none.gif" zoom="https://www.dismall.com/data/attachment/forum/202502/07/180056ayc3n99386b65aff.png" src="https://www.dismall.com/data/attachment/forum/202502/07/180056ayc3n99386b65aff.png" class="zoom" onclick="zoom(this, this.src, 0, 0, 0)" width="496" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" /><br /><br />都5025年了,这种低级问题该改喽。<br /><br />本帖<em>, </em>最后<em>, </em>波多<em>, </em>野结<em>, </em>2025-2-7

波多野结衣 發表於 2025-2-7 18:12:09

楼上说错了<br /><br />应该是将<br /><ol><li>function discuzcode($value) {</ol>这段放在脚本文件里<br />

波多野结衣 發表於 2025-2-7 18:31:19

<ol><li>&lt;?php<br /><li><br /><li>if (!defined('IN_DISCUZ')) {<br /><li>&nbsp; &nbsp; exit('Access Denied');<br /><li>}<br /><li><br /><li>class mobileplugin_identifier{<br /><li><br /><li>&nbsp; &nbsp; // 换帖子中的BR替换成P标签<br /><li>&nbsp; &nbsp; function discuzcode($value) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;global $_G;<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;if ($value['caller'] == 'discuzcode' &amp;&amp; isset($_G['discuzcodemessage'])) {<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 获取要处理的内容<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = $_G['discuzcodemessage'];<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 第一步:移除所有的 &lt;br&gt; 标签<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = preg_replace('/&lt;br\s*\/?&gt;/', '', $thread_message); // 先把 &lt;br&gt; 标签移除<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 第二步:将所有换行符替换为统一的段落分隔符 &lt;p&gt;&lt;/p&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = preg_replace('/\n+/', '&lt;/p&gt;&lt;p&gt;', $thread_message); <br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 第三步:确保每个段落都包裹在 &lt;p&gt;&lt;/p&gt; 标签中<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = '&lt;p&gt;' . $thread_message . '&lt;/p&gt;';<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 第四步:移除每个 &lt;p&gt; 标签中如果仅有 &lt;br&gt; 标签的情况<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = preg_replace('/&lt;p&gt;\s*&lt;br\s*\/?&gt;\s*&lt;\/p&gt;/', '', $thread_message); // 如果 &lt;p&gt; 标签中只有 &lt;br&gt; 标签,去除空段落<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 第五步:移除段落内多余的空白或 &lt;br&gt; 标签<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = preg_replace('/&lt;p&gt;\s*(&lt;br\s*\/?&gt;\s*)*&lt;\/p&gt;/', '&lt;p&gt;&lt;/p&gt;', $thread_message); // 如果段落内有多余的 &lt;br&gt; 标签,替换为空段落<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 最后:处理去掉所有的多余换行符<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $thread_message = preg_replace('/\s+/', '', $thread_message); // 移除多余空格或换行符<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //如果要强行将所有空行删除,取消注释下面这行<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //$thread_message = preg_replace('/&lt;p&gt;\s*&lt;\/p&gt;/', '', $thread_message); //除多余的空 &lt;p&gt;&lt;/p&gt; 标签<br /><li><br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 最终存储处理后的内容<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $_G['discuzcodemessage'] = $thread_message;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;}<br /><li>&nbsp;&nbsp;}<br /><li>}<br /><li>?&gt;<br /><li></ol>这个是手机版插件里面的<br /><br /><br /><img title="QQ20250207-183101.png" id="aimg_34342" aid="34342" src1="static/image/common/none.gif" zoom="https://www.dismall.com/data/attachment/forum/202502/07/183114ux63w73eb8v558eb.png" src="https://www.dismall.com/data/attachment/forum/202502/07/183114ux63w73eb8v558eb.png" class="zoom" onclick="zoom(this, this.src, 0, 0, 0)" width="600" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" /><br />

波多野结衣 發表於 2025-2-7 18:33:11

我的帖子都不会要求大家强行回复的哦

龙二哥 發表於 2025-2-8 13:05:20

牛逼可拉屎

TaC 發表於 2025-2-8 21:28:26

分享是厚道,可是你这写了这么多,我还看不出来用在啥地方,实现啥效果。

kuyxia 發表於 2025-10-5 20:56:58

好多多余的p标签啊
頁: [1]
查看完整版本: 分享一个将帖子中的br换成P