حذف کاراکترهای 4 بایتی از رشته‌های UTF-8

MySQL در کارکتر ست UTF-8 از رشته‌های با بیش از 4 بایت پشتیبانی نمی‌کند. البته در کارکتر ست utf8mb4 که با UTF-8 سازگار هست این مشکل حل شده است.

رشته‌های 4 بایتی بیشتر شامل شکلک‌های تعریف شده در UTF-8 است. برای حذف این کاراکترها به منظور وارد کرده رشته در جداولی با انکدینگ UTF-8 می‌توانید از هر یک از خطوط کد زیر استفاده کنید:

$str = preg_replace('/[\xF0-\xF7].../s', '\xEF\xBF\xBD', $str);
$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '\xEF\xBF\xBD', $str);

مقدار کارکتر 4 بایتی با توجه به توصیه‌ی مقابله با حمله XSS با کارکتر دیگری جایگزین شده است.

البته راه بهتر تغییر به کاراکترست uft8mb4 است.

 

برچسب ها: 

افزودن نظر جدید