梦+想=梦想,这个等式是不成立的。 收藏本站
登陆 / 注册 搜索

阅读:1874   回复: 2

Discuz 帖子使用代码时,保留 tab字符

原创 [复制链接]
小执念 古黑浩劫论坛大牛 2022-8-25 16:12 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
默认情况下在帖子里面用 code 标签插入代码时,系统会把 tab字符替换成四个空格,有几处替换的地方:

1.刚刚插入帖子的时候前端页面替换一次
2.系统输出的时候,又会替换一次

👨‍🎨‌👠📟😫🤙


注意:tab字符在 html 页面上,需要在 <pre> 标签里面才能正常显示。

一、修改前端页面的替换

文件 static/js/bbcode.js 这个地方 149 行修改成 :
👄🗽🥩✡🐅‍
Discuz 帖子使用代码时,保留 tab字符 QQ截图20220825155608.jpg
  1. return $2 + preg_replace(['\t', '   ', '  ', '(\r\n|\n|\r)'], ['&#9;', '&nbsp; &nbsp;', '&nbsp;&nbsp;', '<br />'], $3);
复制代码


👨‍⚕️‎👓🏮😡👆


二、修改输出的替换

为了保证其他地方不变,只修改帖子里面用 code 标签包含的内容

文件 source/function/function_discuzcode.php
👃🚂🍞🆗🦦‍
搜索关键词: function codedisp

在里面加入:
  1. // 替换 tab 为实体字符🧓‌🩴🩸🥰🤳
  2. $code = str_replace("\t", '&#9;', $code);
复制代码


Discuz 帖子使用代码时,保留 tab字符 6.jpg

三、修改模板输出
✋🚐🍧❌🐻‏
前面说过,tab字符在 pre 标签里面才能正常显示,所以要改一下模板里面标签

把你使用的模板文件 discuzcode.htm 里面的:
  1. <ol><li>$code</ol>
复制代码

🧠🪐🥑✔🐠‎

改成:
  1. <pre><ol><li>$code</ol></pre>
复制代码

👨🦱‌🕶📀💪



四、一些小问题

以前帖子里面已经替换了的 tab字符,不会恢复,如果要强制恢复,可能会误杀原本就存在的空格。

🧑‍🌾‌👙🖌🙄✊


想要 code 标签里面全部使用 tab 字符也可以,上面修改成
  1. $code = str_replace(array("\t", '    '), '&#9;', $code);
复制代码


上一篇
下一篇
帖子热度 1894 ℃

颖杰殿下 「初入古黑」 2022-8-25 16:12 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

尔等果如其母戏寡人欤?
小执念 古黑浩劫论坛大牛 2022-8-25 17:16 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
好像有点问题。。。
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表