类别:Develop / 日期:2020-05-11 / 浏览:242 / 评论:2

继续上篇《解决AjaxComment导致换行问题》又发现了一个问题,一直没去解决,然后有个站长提醒了我,于是便列入了测试修改流程。具体的问题就是评论邮件会带<p>标签。

解决zblog评论邮件带标签的问题 p br zblog ajaxcomment php 正则 转义 第1张

这个邮件插件提交的原理就是获取AjaxComment.ID内容然后直接POST,这里不考虑修改函数模板,怕影响到全局调用。那就只能从插件入手,需要修改的文件模板如下

\zb_users\plugin\XF_CommentsNotice\include.php

期间我尝试了四种替换方法全部无效,正则也试过了好几种,大概如下

#正则替换公式 (全部不适用)
'<p>','</p>'
'/[\x{3C}]p[\x{3E}]/','/[\x{3C}][\x{2F}]p[\x{3E}]/'
'#[\x{3C}]p[\x{3C}]#u','#[\x{3C}][\x{2F}]p[\x{3C}]#u'

#正则替换函数
//第一种
$replace=array('','','','','');
$find=array('<p>','</p>','<br>','<span>','</span>');
$CmtContentzy=str_replace($find,$replace,$CmtContent);
//第二种
$CmtContentzxy=nl2br($CmtContent);
//第三种
$find = array("<p>" => " ", "</p>" => " ", "</span>" => " ", "<span>" => " ", "<br>" => " ");
$CmtContentzy = strtr($CmtContent,$find);
//第四种
$find=array('<p>','</p>','<br>','<span>','</span>');
$CmtContentzy = preg_replace($find,'', $CmtContent);

但是奇怪的是,这四种方法我都通过测试页面里的var_dump($CmtContentzy);成功打印!但是一到了插件这里就直接替换不了,懵了两个多小时,最终,我突发奇想,不如看看email的源代码吧,果然...虽然文本代码明面上是以转义过后的<p>标签来显示的,但是如果你尝试进行编辑的话,他就会显示他原本的格式..

<p>111111111111111111111111111111111111111111111111111111111111111111111111111111</p>
&lt;p&gt;111111111111111111111111111111111111111111111111111111111111111111111111111111&lt;/p&gt;

瞬间一下子豁然开朗,然后我便用了下面的形式进行替换

$find=array('<&lt;p&gt;>','<&lt;/p&gt;>','<&lt;br&gt;>');
$CmtContentzy = preg_replace($find,'', $CmtContent);

重新测试之后发现正常了,想想真的是,折腾了大半天正则,还以为哪里写错了没匹配到。原来是转义的原因!

解决zblog评论邮件带标签的问题 p br zblog ajaxcomment php 正则 转义 第2张

具体的修改教程如下

该部分内容已隐藏,评论后 刷新页面 可见。

赞助

感谢您的打赏~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文使用「署名-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议 / Article Use Creative Commons Attribution-ShareAlike 4.0 International License「CC BY 4.0」

 可能感兴趣的文章

伤心叹戈

评论区

共有 2 条评论

user 访客 / 2020-05-21 00:15:49 / Windows 7 x64 / QQBrowser 10.5.4043.400 / 回复

牛批,优秀,666(看隐藏内容emotion

user Edipse / 2020-05-11 08:48:19 / Windows 7 x64 / UC Browser 6.2.4098.3 / 回复

牛批,优秀,666(看隐藏内容emotion

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。