一个函数解决邮件回复主题特殊字符问题

由于我的博客的标题里包含了特殊字符,就是英文下的单引号 ‘,结果呢就会出现一个怪现象,就是评论邮件回复时,邮件发件人和标题会转义成html格式 ' 。

其实早就发现这个问题了,但一直没有去管。但现在想修复这个问题时,发现了个严重的问题:对于Copy代码之类,马马虎虎还凑合,但是真正到修改函数了,还是蛮有难度了,毕竟没有PHP基础嘛!

不多说,先贴出之前的邮件回复就是下面这个样子:

由于俺是用了willin的邮件回复插件,查看了代码,原来是调用的 PHP 的 mail() 函数,于是放狗搜。

发现 mail() 函数的subject参数不能包含任何新行字符

坑爹啊,这新行字符是什么玩意?继续搜,始终找不到解决答案。

木办法,只能用俺的笨方法了,用 str_replace() 函数替换吧。

把get_option(“blogname”)替换为:

1
str_replace("'","'",get_option("blogname"))

发现这样治标不治本,把英文的单引号替换成中文的单引号,这样也行?

继续搜,发现只需把 get_option("blogname") 替换为:

1
html_entity_decode(get_option("blogname"), ENT_QUOTES)

原来根本不是mail()函数的问题,而是get_option(“blogname”)函数输出的html格式,只需把html实体格式化为字符格式就行了。

修改后效果:

OK,搞定!

我怎么觉得还不如直接写成我的博客标题就行了,根本不用什么函数。

爱折腾的孩纸伤不起啊!