انتقل إلى محتوى الدرس

Character Access and Multibyte Length الوصول للمحارف وحساب الطول بـ strlen و mb_strlen

أتقن دوال النصوص المدمجة في PHP 8 للبحث والقص والاستبدال والتنسيق مثل str_contains وsubstr وstr_replace وexplode وstr_pad.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تُخزَّن النصوص في PHP كمصفوفة بايتات؛ لذا تحسب strlen() عدد البايتات الخام، بينما تحسب mb_strlen() عدد الأحرف الفعلية بترميز UTF-8.

  • تشغل أحرف الإنجليزية القياسية (ASCII) بايتاً واحداً، بينما تشغل الأحرف العربية والرموز في UTF-8 من 2 إلى 4 بايتات.
  • فهرسة الأقواس المربعة $word[0] تقرأ البايت الأول، والفهرس السالب $word[-1] يقرأ البايت الأخير.
  • استخدم دائماً mb_strlen($text, "UTF-8") عند التحقق من عدد أحرف مدخلات المستخدم.

الكلمة "Café" بترميز UTF-8 تتكون من 4 أحرف مرئية (نتيجة mb_strlen هي 4)، لكن الحرف é يشغل بايتين فتُرجع strlen() القيمة 5.

مخطط توضيحي: معمل دوال النصوص المدمجة في PHP للبحث والقص والتنسيق
PHP
<?php
$ascii = "CloseTag";
$utf8Word = "Caf\xC3\xA9";

echo "First: " . $ascii[0] . ", Last: " . $ascii[-1] . "\n";
echo "ASCII bytes: " . strlen($ascii) . "\n";
echo "UTF-8 bytes: " . strlen($utf8Word) . "\n";
echo "UTF-8 chars: " . mb_strlen($utf8Word, "UTF-8") . "\n";