به تصویر زیر نگاه کنید، کاراکتر های علامت سوال برای شما آشنا نیستند؟

Non UTF-8 characters

هنگام کار با رشته ای فارسی در محیط وب گاه باعث بروز مشکلاتی این چنینی در رشته ها می شود، این ها در حقیقت کارکترهای `UTF-8` بوده اند که بنا به دلایل مختلف ممکن دیگر در `UTF-8` معتبر نیستند. کار با رشته های حاوی این گونه کاراکتر ها موجب بروز مشکلات می شود، آخرین مشکلی که شخصا با آن رو برو شدم مشکل هنگام ارسال رشته ها به پایگاه داده بود. رشته های `UTF-8` هاوی کاراکتر های غیر `UTF-8` هنگام باعث بروز مشکل در ایجاد سطر جدید در جداول می شوند. اگر نتوان به رشته ی سالم دسترسی پیدا کردم تنها گزینه مناسب حذف این کاراکتر ها از درون رشته است.

``` //reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ? $some_string = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'. '|[\x00-\x7F][\x80-\xBF]+'. '|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'. '|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'. '|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S', '?', $some_string );

//reject overly long 3 byte sequences and UTF-16 surrogates and replace with ?
$some_string = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'.
'|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $some_string );