من همچنان مشکل encode رو دلیل این مشکل می‌دونم.
این کد را وارد کنید:

$str = "دوست خوب";

echo 'Encoding is: <b>' . mb_detect_encoding($str) . "</b> and it is ";
echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",$str)? '<b>valid</b>' : '<b>invalid</b>';

//
خروجی باید این باشد:
Encoding is: UTF-8 and it is valid

امیدوارم مشکل حل بشه.