一个函数解决邮件回复主题特殊字符问题
由于我的博客的标题里包含了特殊字符,就是英文下的单引号 ‘,结果呢就会出现一个怪现象,就是评论邮件回复时,邮件发件人和标题会转义成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,搞定!
我怎么觉得还不如直接写成我的博客标题就行了,根本不用什么函数。
爱折腾的孩纸伤不起啊!