PDA

View Full Version : مشکل عجیب در تابع strlen!



trasilver
شنبه 16 فروردین 1393, 21:12 عصر
سلام خدمت دوستان عزیز.

این تابع چرا می زنه 17 حرف؟؟؟؟


<?php
echo strlen('سلام خوبی');
?>

مگه این 9 حرف نیست؟؟

trasilver
شنبه 16 فروردین 1393, 21:17 عصر
دوستان عزیز شرمنده. مشکل رفع شد باید مثل زیر نوشته بشه:



<?php
echo strlen(utf8_decode('سلام خوبی'));
?>

SilverLearn
شنبه 16 فروردین 1393, 21:25 عصر
درود

این تابع به همراه مثال های استفاده از کاراکترهای utf8 در آدرس زیر موجود هست

http://ir1.php.net/strlen

موفق باشید

hamedarian2009
شنبه 16 فروردین 1393, 22:40 عصر
اینجوری استفاده کنید بهتره

echo mb_strlen('سلام خوبی','UTF8');

MMSHFE
یک شنبه 17 فروردین 1393, 03:33 صبح
سلام خدمت دوستان عزیز.

این تابع چرا می زنه 17 حرف؟؟؟؟


<?php
echo strlen('سلام خوبی');
?>

مگه این 9 حرف نیست؟؟
راه حل صحیح استفاده از mb_strlen هست که دوستان اشاره کردن ولی اگه میخواین علت اینکه چرا میگه 17 حرف رو بدونید، دلیلش اینه که strlen تعداد بایتها رو میشماره و چون حروف فارسی Unicode هستن، درنتیجه سلام 8 بایت و خوبی هم 8 بایت فضا میگیره و Space همون یک بایت رو اشغال میکنه که در مجموعه میشه 17 بایت ولی نسخه MultiByte این تابع یعنی mb_strlen حواسش به کدگذاری حروف هست.