لآ تستعمل الدالة strlen() في برمجياتك بـ PHP

على الـرغم من إسمها, strlen() لا تقوم بعد عدد الحروف, بل إنها تقوم بحساب عدد البايتات. و في الترميز UTF-8 نجد أن هناك بضا من الحروف التي تصل إلى 4 بايتات Bytes.

[PHP]
declare( encoding = ‘UTF-8′ );
header(‘Content-Type: text/plain;charset=utf-8′);
$string = ‘Doppelgänger’;
print ‘strlen(): ‘ . strlen( $string ) . “\n”;
print ‘mb_strlen(): ‘ . mb_strlen( $string, ‘utf8′ ) . “\n\n”;
print ‘substr(): ‘ . substr( $string, 0, 8 ) . “\n”;
print ‘mb_substr(): ‘ . mb_substr( $string, 0, 8, ‘utf8′ );
[/PHP]

النـتيجة:

broken doppelgaenger لآ تستعمل الدالة strlen() في برمجياتك بـ PHP

كمت ترى فإنه عند إستخراج نص عادي نرى أنه كسر و لم يظهر بالشكل المطلوب, وهذا ما يحدث كل مرة عند إستخدام الدوال strlen() و substr() على الـصفحات المشفرة بـالترميز UTF-8.

و بالتالي فمن أجل عد عدد الحروف أو من أجل إظهار جزء من الكلمات عند إستخدام الترميز UTF-8 بشكل جيد, يمكنك إستخدام التوابع mb_strlen() و mb_substr() ..

و إلى هنا أصل إلى نهاية هذه التدوينة //

تحياتي ..

Be Sociable, Share!
  • more لآ تستعمل الدالة strlen() في برمجياتك بـ PHP


طالب من مدينة تنجداد (الراشدية) - المغرب, مهتم بدراسة الـبرمجة (PHP/MySQL/Ajax/CSS/HTML/Javascript/C++), أحب التدوين, القراءة و البحث عن كل ما هو جديد في مجال دراستي, كما أحب الإطلاع على كل ما يتعلق بمجال SEO (تقنيات محركات البحث).

شارك الموضوع

الموضوعات المشابهة

  • Dre

    لقد وقعت في نفس المشكل من قبل وتم حله  بإضافة mb_ .

    شكرا