Hello World! 收藏本站
登陆 / 注册 搜索

阅读:1299   回复: 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);
复制代码


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

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

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

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

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

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

本版积分规则

快速回复 返回列表