محاسبه تعداد کلمات رشته در php

تاریخ: 28 تیر 1399

اگر بخواهیم تعداد کلمات یک رشته را بدست آوریم، می توانیم از تابع str_word_count استفاده نماییم.

 

سینتکس تابع str_word_count:


str_word_count( $string, $format, $char );

 

پارامتر اول این تابع، رشته مدنظر ما می باشد و وارد کردن آن ضروری است:


$x = 'Hello To All Of World';

echo str_word_count($x); //output: 5

 

پارامتر دوم مشخص می کند که خروجی ما به چه صورتی باشد.

همانطور که در کد بالا دیدیم، در صورتی که مقدار فرمت وارد نشود، یک عدد که همان تعداد کلمات رشته است برگردانده می شود.

اما پارامتر دوم می تواند سه مقدار داشته باشد:

  • 0 : این مقدار همان مقدار پیشفرض است که یک عدد صحیح برگردانده می شود.
  • 1 : اگر فرمت را 1 قرار دهیم، یک آرایه شامل تمام کلمات برگردانده می شود. هر کلمه یک المان آرایه.
</pre>
$x = 'Hello To All Of World';

print_r(str_word_count($x, 1));

/*output:
Array
(
[0] => Hello
[1] => To
[2] => All
[3] => Of
[4] => World
)
*/
<pre>

 

  • 2 : مقدار 2 باعث می شود که آرایه ای که تابع به ما بر می گرداند، کلیدهای هر المان برابر ایندکس اولین حرف کلمه در رشته باشد.
</pre>
$x = 'Hello To All Of World';

print_r(str_word_count($x, 2));

/*output:
Array
(
[0] => Hello
[6] => To
[9] => All
[13] => Of
[16] => World
)
*/
<pre>

 

تابع str_word_count کاراکترهای خاص را به عنوان کلمه در نظر نمی گیرد. اما با پارامتر سوم این تابع می توانیم مشخص کنیم که یک کاراکتر خاص یا عدد را در رشته فعلی به عنوان کلمه در نظر بگیرد:


$x = 'Hello To All ** Of World';

echo str_word_count($x, 0); //output: 5

echo str_word_count($x, 0, '*') //output: 6

 

تابع str_word_count اعداد را به عنوان کلمه در نظر نمی گیرد:


$x = 'b2b';

echo str_word_count($x); //output: 2

 

مشخص است که این تابع با شرایطی که دارد برای محاسبه تعداد کلمات مناسب نیست. در واقع منظور ما از گرفتن تعداد کلمات یک رشته تمام چیزهایی است که با فاصله (اسپیس) از هم جدا شده اند. لذا تابع زیر مناسب تر می باشد:

function _wordCount($text) {

//it removes html tags
$text = preg_replace('/<[^>]*>/', '', $text);

//it removes html space code
$text = preg_replace(array('/&nbsp;/'), ' ', $text);

//it removes multiple spaces with single
$text = trim(preg_replace('!\s+!', ' ', $text));

return count(explode(' ', $text));
}

//usage
$x = "B 2 -- $ b";
echo _wordCount($x); //output: 5

 

 

 

 

 

 

 

 

 

دیدگاهتان را بنویسید

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