1 问题的出现

之前阿里云做活动,用9块钱撸了一个两年的40G-OSS,所以最开始搭建博客的时候就是使用了OSS Upload作为我的媒体库,同时在本地媒体库也存有备份。然后最新想好好写写有关计算几何算法的东西,不可避免的需要编辑大量的公式,而自己一直在使用markdown语法编辑文章,当然笔记软件习惯使用了OneNote了,但是正当我写三维空间中的旋转变换与旋转矩阵这篇博文时,我发现在WP Editor.md/WP Githuber MD编辑的好好的katex格式的公式点了发布与更新之后发现公式里面所有的反斜杠\都没有,要知道latex中很多特殊的字符都是通过反斜杠\来进行辨识的,而反斜杠的去除导致了在网页上面katex公式显示不出来,类似于下面:

    r(\varphi) = \left[\left|\cos(m\varphi)\over a\right|^{n2} + \left| \sin(m\varphi) \over b\right|^{n3} \right]^{- 1 \over n1}
r(\varphi) = \left[\left|\cos(m\varphi)\over a\right|^{n2} + \left| \sin(m\varphi) \over b\right|^{n3} \right]^{- 1 \over n1}

全部变成了:

    r(varphi) = left[left|cos(mvarphi)over aright|^{n2} + left| sin(mvarphi) over bright|^{n3} right]^{- 1 over n1}

2 问题的排查与解决

2.1 主题排除

第一时间觉得是目前使用过的主题的问题,然后第一时间更换了别的主题,发现问题并没有解决。

2.1 插件排除

既然不是主题的问题,那么就是插件的问题了。注意将插件逐一关闭,发现将OSSUpload插件关闭之后,问题消失了。

2.3 代码审查

用ftp工具将OSSUpload整个插件的代码down到本地之后,发现了OSS Upload.php中有一个函数:

stripslashes

这个函数就是去除字符串中所有的反斜杠,md。找了很久终于找到了,发现了这个函数写在了函数oss_upload_post_save之中,其中在该插件初始化的时候已经注册了一个钩子函数:

add_filter('content_save_pre', 'oss_upload_post_save');

在文章内容保存之前即可触发这个钩子函数。

2.4 解决

将stripslashes这一行代码注释,重启OSSUpload插件,发现了latex公式正常显示了,bingo!欺负我不会PHP!!!