امروز: ۰۳ آذر ۱۴۰۳
در مسیر توسعه فردی و سازمانی
اشتراک دانش مجید محمدیان » مشکل تابع serialize برای کاراکتر های فارسی (۱۳۹۵/۸/۰۱)
تایید شده

هنگامی که در php یک آرایه از کاراکتر های فارسی داریم و می خواهیم آنرا serialize کنیم و در جایی ذخیره کنیم باید به صورت زیر عمل کنیم تا تابع serialize به درستی کار کند و داده به صورت صحیح تولید شود


 


$data = array('name' => 'مجید محمدیان');


$data = serialize($data);


$data = preg_replace_callback ( '!s:(\d+):"(.*?)";!', function($match) {


            return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';


},$data );


بعد از این عملیات داده بصورت صحیح serialize می شود و می توانید با تابع unserialize آنرا بازگردانی کنید در غیر این صورت این تابع قادر به بازگردانی آن نخواهد شد و داده شما از دست خواهد رفت


 


من موضوع را نمی دانستم حال چه کنم؟


فرض کنید داده شما ذخیره شده است و دیگر کاری از دست شما بر نمی آید، مشکلی پیش نیامده، راه حل همینجاست.


 


$data = preg_replace_callback ( '!s:(\d+):"(.*?)";!', function($match) {


            return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';


},$data );


$data = unserialize($data);


ولی به یاد داشته باشید پیشگیری بهتر از درمان است و شما قبل از اینکه داده را ذخیره نمایید آنرا به شکل درست ذخیره کنید.

محتوای آخرین دربهای گشوده شده
  • یک باک بنزین 206 معادل 75000 ت بوسیله کلیدک
  • 45000 تومان وجه نقد رایج مملکت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • دو عدد  کارت سبز بوسیله کلیدک
  • دو روز ناهار میهمان شرکت به انتخاب خودتان معادل هر نهار ۳۰ ت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • 45000 تومان وجه نقد رایج مملکت بوسیله کلیدک
ارسال درخواست دوره یا محتوای آموزشی