最近做的论坛项目,采用的是国外未有正式版本的Flarum,开启Markdown插件之后发现~被转义成了下标,引起很多用户吐槽,为了解决这个bug,找了好多资料都不行,靠人不如靠己,最后找到了解决方案,话不多少,直入正题。
我修改成输入"_"会被转义成下标,需要修改两个文件:
1.修改vendor/s9e/text-formatter/src/Plugins/Litedown/Parser/Passes/Subscript.js 第3行
修改前:parseAbstractScript('SUB', '~', /~(?!\()[^\x17\s~()]+~?/g, /~\([^\x17()]+\)/g);
修改后:parseAbstractScript('SUB', '_', /_(?!\()[^\x17\s_()]+_?/g, /_\([^\x17()]+\)/g);
修改本文件保证帖子详情页,用户发表回复预览时,输入_能被转义成下标,输入~不被转义
2.修改vendor/s9e/text-formatter/src/Plugins/Litedown/Parser/Passes/Subscript.php第13行
修改前:$this->parseAbstractScript('SUB', '~', '/~(?!\\()[^\\x17\\s~()]++~?/', '/~\\([^\\x17()]+\\)/');
修改后:$this->parseAbstractScript('SUB', '_', '/_(?!\\()[^\\x17\\s~()]++_?/', '/_\\([^\\x17()]+\\)/');
修改本文件确保数据被保存到数据库时,_被转义成<sub></sub>
至此即可,代码上传至服务器之后记得清除项目缓存呦~
效果如下:
只修改Subscript.php文件 不修改Subscript.js会出现保存之后~没被转义,而详情页发表回复预览时~转义成下标