Deprecated: preg_replace(): The /e modifier is deprecated in phpmailer

只愿长相守 提交于 2019-12-05 07:26:04

Try and Replace:

This

$encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',"'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded);

With

$encoded = preg_replace_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',function($m) { return '='.sprintf('%02X', ord(stripslashes($m[1]))); }, $encoded);
switch (strtolower($position)) {
  case 'phrase':
    //$encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
    $encoded = preg_replace_callback("/([^A-Za-z0-9!*+\/ -])/e",function($m) { return '='.sprintf('%02X', ord(stripslashes($m[1]))); }, $encoded);
    break;
  case 'comment':
    //$encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
    $encoded = preg_replace_callback("/([\(\)\"])/e",function($m) { return '='.sprintf('%02X', ord(stripslashes($m[1]))); }, $encoded);
  case 'text':
  default:
    // Replace every high ascii, control =, ? and _ characters
    //TODO using /e (equivalent to eval()) is probably not a good idea
    //$encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',"'='.sprintf('%02X', ord('\\1'))", $encoded);
    $encoded = preg_replace_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',function($m) { return '='.sprintf('%02X', ord(stripslashes($m[1]))); }, $encoded);
    break;
}

yes. it's work on php 7.2.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!