شناسایی اعداد از متن یونیکد

۳ سال پیش(به روز شده در ۲ سال پیش) پی اچ پی(PHP)(توابع) ۰

روشهای رایج همگی جهت شناسایی اعداد یک رشته روش زیر را پیشنهاد میکنند:

preg_match_all('!\d+!', $str, $matches);

اما روش فوق برای رشته های یونیکد مثلا UTF-8 جواب نمیدهد و نتیجه درستی ندارد و کافیست امتحان کنید. اما تابع زیر برای هر نوع رشته ای، اعداد را پیدا کرده و بصورت آرایه بر میگرداند.

function unicodeStrDigits($str) {
    $arr = array();
    $sub = '';
    for ($i = 0; $i < strlen($str); $i++) { 
        if (is_numeric($str[$i])) {
            $sub .= $str[$i];
            continue;
        } else {
            if ($sub) {
                array_push($arr, $sub);
                $sub = '';
            }
        }
    }
 
    if ($sub) {
        array_push($arr, $sub); 
    }
 
    return $arr;
}

روش دیگر:

$res = array();
$str = 'test 1234 555 2.7 string ..... 2.2 3.3';
$str = preg_replace("/[^0-9\.]/", " ", $str);
$str = trim(preg_replace('/\s+/u', ' ', $str));
$arr = explode(' ', $str);
for ($i = 0; $i < count($arr); $i++) {
    if (is_numeric($arr[$i])) {
        $res[] = $arr[$i];
    }
}
print_r($res); //Array ( [0] => 1234 [1] => 555 [2] => 2.7 [3] => 2.2 [4] => 3.3 )

اطلاعات بیشتر

برچسبها

digits php تابع

صفحات پیشنهادی


تابع تبدیل مبنای اعداد بزرگ در php...

تابع معرفی شده با استناد به مطلبی از سایت Stackoverflow می باشد. تابع پیشفرض ()base_convert در php دقیقا همین کار را انجام میدهد اما برای اعداد بزرگ ناتوان هست که در مثال انتهای کد مشخص شده است. در ای...

تابع تشخیص پسوند از نام فایل...

تابع زیر پسوند فایل را بر می گرداند. function ext($file_name) { return substr($file_name, strrpos($file_name, '.') + 1); }...

مرتب سازی آرایه های چند بعدی با استفاده از اندیس خاص (sort array)...

تابع زیر آرایه مورد نظر را با توجه به اندیس ورودی مرتب سازی می کند. ورودی اول مربوط به آرایه , ورودی دوم مربوط به اندیس ای است که باید بر اساس آن مرتب سازی صورت گیرد و بخش سوم صعودی یا نزولی بودن ترتی...

تابع ()ceil در php...

تابع ()ceil عدد ورودی را به بزرگترین عدد صحیح گرد می کند. برای فهم بیشتر از کاربرد تابع ، مثالهای زیر را ببینید......

نظر

نظری ثبت نشده است.