شمارش تعداد کاراکترهای یک رشته در پی اچ پی با استفاده از تابع count_chars

تابع count_chars اطلاعاتی در مورد کاراکترهای استفاده شده در یک رشته را برمیگرداند و به صورت زیر در پی اچ پی تعریف شده است.

 count_chars ( string $string [, int $mode = 0 ] ) : mixed

تعداد کاراکترها اتفاق افتاده در تابع را می شمارد.

ورودی‌های تابع ‌count_chars

string:رشته‌ای که قرار توسط تابع ارزیابی بشه

mode:حالت خروجی تابع را مشخص میکنه

خروجی‌های تابع ‌count_chars

نسبت به دومین پارامتر یکی از خروجی‌های زیر را برمیگرداند.

  • اگه دومین پارامتر این تابع ۰ باشه تابع یک آرایه برمیگردونه که شامل تمام کاراکترهای تک بایتی و تعداد استفاده‌ی آنها در رشته‌ی وردوی است کلید های این آرایه از نوع byte-value هستند و تمام اعداد ۰ تا ۲۵۵ را شامل میشه که هر کلید معرف اسکی کد یک کاراکتر تک بایتی و مقدار ذخیره شده در کلید متناظر نشان دهنده‌ی تعداد تکرار کاراکتر مورد نظر در رشته ی ورودی است.(در این مورد تمام کاراکترهای تک بایتی اعم از استفاده شده و استفاده نشده در رشته در آرایه‌ی خروجی لیست شده است)
  • اگه دومین پارامتر این تابع ۱ باشه تابع یک آرایه برمیگردونه که شامل تمام کاراکترها استفاده شده و تعداد تکرار هر کاراکتر است. کلیدهای این آرایه از نوع byte-value هستند و معرف کد اسکی کاراکتر مورد نظر و مقدار ذخیره شده تعداد تکرار کاراکتر متناظر در رشته‌ی ورودی است.(در این مورد فقط کاراکترهای استفاده شده در رشته‌ی ورودی در آرایه‌ی خروجی لیست شده است)
  • اگه دومین پارامتر این تابع ۲ باشه تابع یک آرایه برمیگردونه که شامل تمام کاراکترهای استفاده نشده در رشته ورودی است و کلیدهای ای آرایه از نوع byte-value هستند که معرف کد اسکی یک کاراکتر تک بایتی است و مقدار هر عضو آرایه معرف تعداد تکرار (در این مورد صفر برای تمام اعضای آرایه خروجی) کاراکتر متناظر است.
  • اگه دومین پارامتر تابع ۳ باشه تابع یک رشته برمیگردونه که شامل تمام کاراکترهایی است که فقط یک بار در رشته‌ی ورودی (اولین پارامتر تابع) استفاده شده است.
  • اگه دومین پارامتر این تابع ۴ باشه تابع یک رشته برمیگردونه که شامل تمام کاراکترهای استفاده نشده در اولین پارمتر این تابع است.

بیشتر بخوانید: استخراج بخشی از یک رشته در پی اچ پی

مثل همیشه یک مثال از فراخوانی تابع میتونه در درک کارکرد تابع مفید باشه


<?php
$data = "Two Ts and one F.";

foreach (count_chars($data, 1) as $i => $val) {
   echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n";
}
//output:
There were 4 instance(s) of " " in the string.
There were 1 instance(s) of "." in the string.
There were 1 instance(s) of "F" in the string.
There were 2 instance(s) of "T" in the string.
There were 1 instance(s) of "a" in the string.
There were 1 instance(s) of "d" in the string.
There were 1 instance(s) of "e" in the string.
There were 2 instance(s) of "n" in the string.
There were 2 instance(s) of "o" in the string.
There were 1 instance(s) of "s" in the string.
There were 1 instance(s) of "w" in the string.
?>

این تابع فقط برای رشته‌هایی که از کاراکترهای تک بایتی تشکیل شده اند کاربرد داره برای استفاده در رشته‌های بیش از یک بایت مثل رشته‌های فارسی میتونید از تابع mb_count_char که در وب سایت php.net یکی از کاربرها تعریف کرده استفاده کنید.

<?php
function mb_count_chars($input) {
    $l = mb_strlen($input, 'UTF-8');
    $unique = array();
    for($i = 0; $i < $l; $i++) {
        $char = mb_substr($input, $i, 1, 'UTF-8');
        if(!array_key_exists($char, $unique))
            $unique[$char] = 0;
        $unique[$char]++;
    }
    return $unique;
}

$input = "سلام دنیا";
echo "<pre>";
print_r( mb_count_chars($input) );
echo "</pre>";
//output:
Array
(
    [س] => ۱
    [ل] => ۱
    [ا] => ۲
    [م] => ۱
    [ ] => ۱
    [د] => ۱
    [ن] => ۱
    [ی] => ۱
)

?>

جهت سفارش طراحی وب سایت و سئو وب سایت با ما تماس بگیرید.

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