محاسبه طول رشته در php

تاریخ: 17 تیر 1399

تابع strlen یکی از توابعی است که طول یک رشته را محاسبه می کند. (طول رشته شامل تعداد بایت های یک رشته است نه صرفا کاراکترها – بعضی کاراکترها مانند حروف زبان فارسی جزو حروف یونیکد هستند و طول آنها ممکن است یک تا شش کاراکتر باشد)


$x = "hello world";

$length = strlen($x);

echo $length; //output: 11

 

در زبان های utf8 مشکلی که وجود دارد این است که نمی توانیم طول دقیق رشته را با استفاده از تابع strlen بدست آوریم. لذا یک تابع دیگر به نام mb_strlen وجود دارد که می توانیم نوع انکدینگ زبان را هم مشخص کنیم:


$x = "سلام بر تو";

echo strlen($x); //output: 18 !!!

echo mb_strlen($x, 'utf8'); //output: 10

 

بهتر است همیشه از تابع mb_strlen استفاده کنیم تا در همه حالات مقدار درستی دریافت کنیم. (معمولا در برنامه تعداد کاراکترها مدنظر است نه تعداد بایت ها)

روش دیگری که وجود دارد این است که ابتدا با استفاده از تابع utf8_decode، رشته خودمان را به utf8 تبدیل می کنیم و سپس به تابع strlen پاس می دهیم:


$x = 'سلام بر تو';

echo strlen(utf8_decode($x)); //output: 10

 

فرض کنیم میخواهیم یک شرط بنویسیم که اگر تعداد کاراکترهای یک رشته بزرگتر از 5 بود، یک جمله ای در خروجی چاپ شود: خوب می توانیم از تابع strlen استفاده کنیم:

$x = 'Hello World';
 
if( strlen($x) > 5 ) //true
{
echo 'This is greater than 5';
}

 

یک راه حل بهینه تر وجود دارد و آن استفاده از تابع isset می باشد. این تابع جزو دستورات language construct می باشد و سرعت اجرای آن از توابع معمولی مانند strlen بیشتر است.

طبعا اگر کاراکتر ششم موجود باشد، طول رشته بیشتر از 5 خواهد بود. پس داریم:


$x = 'Hello World';

if( isset($x[5]) ) //true
{
echo 'This is greater than 5';
}

 

در اینصورت اگر بخواهیم چک کنیم که مقدار رشته خالی یا null هست:

$x = '';

if( isset($x[0]) ) //isnt empty
{
echo 'is empty';
}

 

که چیزی چاپ نخواهد شد چون رشته خالی است و کاراکتر اولی ندارد!

 

 

 

 

پاسخ دادن به حسین

  • طراحی افزونه وردپرس