بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل strlen با حروف فارسی

مدیریت گفتگو
Motaba_Love_PHP 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام 

این تابع پی اچ پی حروف فارسی رو هر کارکتر رو دو تا حساب میکنه 

 

مثلا تعداد کارکتر کلمه *سلام* رو هشتا نشون میده !!!

خب تا الان مشکلی نیست میگیم اخرش ی تقسیم بر دو میکنیم ... 

ولی مشکل اصلی اینجاست که اگه ما هم متن فارسی داشته باشیم هم انگلیسی ... دیگه روش تقسیم بر دو هم هیچ میشه ..کی

 

کسی راه حلی داره؟؟

نظرات

مهدی 9 سال پیش
توابعی که با رشته سروکار دارند دو نسخه هستند. یک نسخه برای حروف لاتین و یک نسخه برای زبان های uft8. برای استفاده از این توابع تو زبان فارسی قبل اسم تابع mb_ بزنید. مثلا mb_strlen

پاسخ‌ها 1

محسن موحد 9 سال پیش

علتش این هست که strlen و توابع دیگه ی PHP فقط از رمزگذاری single byte پشتیبانی میکنند. یعنی انکدهایی مثل ascii، extended ascii، ISO-8859-1
حالا وقتی شما یک کاراکتر unicode رو میخواید، طولش رو اندازه بگیرید، strlen نمیدونه که این رشته ی شما، کاراکترهای دوبایتی یا سه بایتی یا 4 بایتی داره. پس تمام بایت هارو میشمره.

پس راهکارش استفاده از توابع Multi-Byte هست.
توو یکی دو روز آینده، مقاله ی مفصلی در مورد رشته ها و انکدینگ ها داخل bithub.ir میگذارم.

نظرات


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