Deprecated: preg_replace(): The /e modifier is deprecated in phpmailer Çözümü - Seditio Yazılım - Seditio CMS Türkiye

Yayınımız yeniliklerle beraber yeni sitemizden devam ediyor. Seditio.com.tr takip edin.

User profile picture

Kaan

Seditio CMS

Deprecated: preg_replace(): The /e modifier is deprecated in phpmailer Çözümü

class.phpmailer.php Yerel sunucuda e-posta göndermek için kullanıyorum , yerel sunucumda PHP sürümüyle iyi işliyor php5.3.4ancak PHP sürümünü güncelledikten sonra 5.5.4aşağıdaki mesajı gösteriyor ise aşağıdaki adımları izleyin.

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in class.phpmailer.php`

Hataya neden olan satır

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

Alttaki ile değiştir.

$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);

Php 7 ve üst versiyonlar için ise alttakini uygulayın.

Bul

switch (strtolower($position)) {
          case "phrase":
            $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/", "'='.sprintf('%02X', ord('\\1'))", $encoded);
            break;
          case "comment":
            $encoded = preg_replace("/([\(\)\"])/", "'='.sprintf('%02X', ord('\\1'))", $encoded);
          case "text":
          default:
            // Replace every high ascii, control =, ? and _ characters
            $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',
                  "'='.sprintf('%02X', ord('\\1'))", $encoded);
            break;
        }

Değiştir

switch (strtolower($position)) {
  case 'phrase':
 $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_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_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',function($m) { return '='.sprintf('%02X', ord(stripslashes($m[1]))); }, $encoded);
    break;
}

 


deprecated: preg_replace(): the /e modifier is deprecated in phpmailer Çözümü

Yorumlar

Henüz yorum yapılmamıştır.