بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل strlen با حروف فارسی
سلام
این تابع پی اچ پی حروف فارسی رو هر کارکتر رو دو تا حساب میکنه
مثلا تعداد کارکتر کلمه *سلام* رو هشتا نشون میده !!!
خب تا الان مشکلی نیست میگیم اخرش ی تقسیم بر دو میکنیم ...
ولی مشکل اصلی اینجاست که اگه ما هم متن فارسی داشته باشیم هم انگلیسی ... دیگه روش تقسیم بر دو هم هیچ میشه ..کی
کسی راه حلی داره؟؟
+1
0
توابعی که با رشته سروکار دارند دو نسخه هستند. یک نسخه برای حروف لاتین و یک نسخه برای زبان های uft8. برای استفاده از این توابع تو زبان فارسی قبل اسم تابع mb_ بزنید.
مثلا mb_strlen (9 سال پیش)
0
0
لینک (9 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
محسن موحد
9 سال پیش
0
0
علتش این هست که strlen و توابع دیگه ی PHP فقط از رمزگذاری single byte پشتیبانی میکنند. یعنی انکدهایی مثل ascii، extended ascii، ISO-8859-1
حالا وقتی شما یک کاراکتر unicode رو میخواید، طولش رو اندازه بگیرید، strlen نمیدونه که این رشته ی شما، کاراکترهای دوبایتی یا سه بایتی یا 4 بایتی داره. پس تمام بایت هارو میشمره.
پس راهکارش استفاده از توابع Multi-Byte هست.
توو یکی دو روز آینده، مقاله ی مفصلی در مورد رشته ها و انکدینگ ها داخل bithub.ir میگذارم.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .