شرح صفوف ومحتوى الفقرة
تُخزَّن النصوص في 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
$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";