النتيجة تعتمد على الترميز، لأن strlen() تعدّ البايتات وليس الحروف.
مع UTF-8، وهو المعتاد اليوم، كل حرف عربي يأخذ بايتين:
echo strlen("مرحبا"); // 10 (in UTF-8)
echo mb_strlen("مرحبا"); // 5
الحل
للنصوص العربية، أو أي نص قد يحتوي حروفًا غير إنجليزية، استخدم دوال mb_:
mb_strlen($text);
mb_substr($text, 0, 20);
mb_strtoupper($text);
دوال النصوص العادية تقطع الحروف العربية من منتصفها أحيانًا، فتظهر رموز غريبة.