اگر توابع مربوط به کار روی رشته ها مثل substr، strlen، strpos و … را روی متون فارسی استفاده کنیم می بینیم که نتیجه ی اشتباهی را در خروجی برمیگرداند:
همانطور که می بینید، در مورد کلمه انگلیسی Hello World تعداد به درستی محاسبه می شود اما در مورد جمله فارسی “خوش آمدید” که تعداد حروف آن 9 است اشتباهاً عدد 17 را چاپ می کند.
در مورد باقی توابع نیز به همین شکل است. مثلاً در مورد تابع substr که مربوط به برداشت تکه ای از متن است، علاوه بر اینکه عملیات را اشتباه انجام میدهد، بلکه حروف ناخواسته ای را نیز چاپ می کند:
برای برطرف کردن این مشکل به جای توابع substr، strlen، strpos و … از توابع mb_substr،mb_strlen، mb_strpos و … استفاده می کنیم.
این توابع یک ورودی اضافه نسبت به تابع اصلی دارند، که در آن انکدینگ مربوط به حروف فارسی یعنی utf-8 را باید قرار دهیم. البته اگر فایل php مان با همین انکدینگ نوشته شده باشد، نیازی به نوشتن این ورودی نیز نداریم.
یا
دیدگاهها