استخدِم `mb_strlen($text, 'utf-8')` ولا `strlen($text)` في لغة بي إتش بي (PHP) ?
في معظم الحالات، عليك أن تستخدم mb_strlen($text, 'utf-8')
في لغة پي إتش پي PHP. وإليك الأسباب.
ليه mb_strlen
هي الأفضل؟ 🔗
الدقة في حساب الحروف التي تتكون من أكثر من بايت:
mb_strlen
هي فانكشن مُصمّمة للتعرف على الحروف والرموز التي تتكون من أكتر من بايت (multibyte charachers encodings) مثل UTF-8. هذه الفانكشن تَعْتَبِر الحروف والرموز مكونة من أكثر من بايت، وبذلك تعطس عدد الحروف بشكل صحيح. أماstrlen
تفترض أن الحروف والرموز مكونة من بايت واحد فقط لذلك أحياناً تعطي عدد الحروف بشكل خاطئ إن كان هناك رموز خارج الـ ASCII.التناسق والإتساق: إن كنت تتعامل مع نصوص مكوده بـ UTF-8 encoded data (وهو المُعْتاد حالياً)، استخدم فانكشن
mb_strlen
لتكون مطمئن لدقة وتناسق العدد الناتج في كل أجزاء الكود الذي تستخدمه. هذه الفانكشن تتجنب السلوكيات والنتائج الغير متوقعة عند التعامل مع رموز وحروف خارج نطاق الـ ASCII.مناسبة للمستقبَل: حتى إن كانت البيانات والنصوص التي تتعامل معها اليوم هي نصوص عبارة عن ASCII فقط ، استخدم الفانكشن
mb_strlen
لكي يكون الكود الذي تكتبه مستعداً للتغيرات المستقبلية التي ربما تطرأ على المشروع الذي تعمل عليه حالياً.
متى نستخدم فانكشن strlen
؟ 🔗
ربما يكون هناك بعض الحالات النادرة التي تكون فيها فانكشن strlen
مقبولة:
الكود القديم: إن كنت تعمل على كود قديم وهذا الكود يعتمد على نصوص مكونة من بايت واحدة للرمز، ربما يكون استخدام
strlen
مناسباً. ولكنني أفضل استخدامmb_strlen
حتى في هذه الحالة لأسباب متعددة منها الاستعداد للمستقبل واحتمالات تغير البيانات والنصوص المدعومة.عمليات تعتمد على عدد البايت: إن كنت تعتمد بشكل مباشر على عدد البايت في النص ، يُمكنك استخدام
strlen
. ولكنني حتى في هذه الحالة أفضل استخدام الفانكشن بهذا الشكلmb_strlen($text, '8bit')
. وبذلك أحصل على نتائج دقيقة لعدد البايت المكون للبيانات النصية بإستخدام الفانكشن الحديثة التي تضع في اعتبارها دعم عدد أكبر من أنواع النصوص (character encodings).
بإختصار 🔗
استخدم mb_strlen($text, 'utf-8')
في كل الاستخدامات للحصول على دقة في عدّ الرموز والحروف وخاصةً عندما تكون البيانات UTF-8 encoded data. لأنها تساعدك في تجنب الحالات الخاصة والأخطاء غير المتوقعة.
أتمنى أن تكون قد استفدت من الموضوع ، إن كنت تعرف أي شخص يُمكنه الإستفادة من هذه المعلومات، ارسل له رابط هذا المقال. إن أردت معرفة الموضوعات الجديدة بعد نشرها مباشرةً على موقع أبانوب حنا ، تابعني على يوتيوب و تيليجرام ، و فيسبوك ، و واتساب .