博主好困…写完就睡了~~~![/box] [box] 首先说一下我是怎么发现的吧…
我在捣鼓数据库备份插件时测试邮件备份时发现了那个错误…
另外这个错误只有php5.3及以后的版本才有!
同时这个错误也可能导致评论邮件发不出去
[/box][box] 解决方法很简单
那就是将ereg修改为preg_match,然后在正则前后都加上”/”
在WP-Mail-SMTP.php里搜索ereg,找到的第一个就替换为preg_match,然后正则前后加”/”
不会改得同学可以直接用下面改好的函数段替换原ereg所在的函数段
下面的这个可能会报错,请看最下面的
if (!function_exists('validate_email')) : function validate_email( $email, $check_domain = true) { if (preg_match('/^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+/'.'@'. '/[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\./'. '/[-!#$%&\'*+\\.\/0-9=?A-Z^_`a-z{|}~]+$/', $email)) { if ($check_domain && function_exists('checkdnsrr')) { list (, $domain) = explode('@', $email); if (checkdnsrr($domain.'.', 'MX') || checkdnsrr($domain.'.', 'A')) { return true; } return false; } return true; } return false; }
另外,如果实在不会改可以等我修改好的…
[/box] [box] 坑爹了…这插件的正则在改完后虽然可以用…但是PHP总是报错….
PHP Warning: preg_match(): Unknown modifier ‘0’
唉…做为一个正则渣表示鸭梨山大…
直接谷歌了一个正则把原来的给换掉…
if (!function_exists('validate_email')) : function validate_email( $email, $check_domain = true) { if (preg_match('/^[^0-9][a-zA-Z0-9_]+ ([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+ ([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)) { if ($check_domain && function_exists('checkdnsrr')) { list (, $domain) = explode('@', $email); if (checkdnsrr($domain.'.', 'MX') || checkdnsrr($domain.'.', 'A')) { return true; } return false; } return true; } return false; }[/box]
转载请注明:神奇海域 » 解决WP-Mail-SMTP在php5.3后出现的Function ereg() is deprecated邮件无法发送
莫非你跟我说的就是这个问题?