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

۱ سال پیش(به روز شده در ۳ ماه پیش) پی اچ پی(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 تابع

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

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

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

اجرای دستور INSERT در MySQL به صورت تابع در PHP...

دستور INSERT یکی از دستورات پرکاربرد در پایگاه داده MySQL است. در پروژه های بزرگ برای اجرای یک فرآیند مثلا ثبت کاربر ممکن است چندین بار این دستور مورد استفاده قرار گیرد. اگر بخواهیم به صورت دستی مدام ...

ایجاد دایرکتوری های تو در تو(گسترش تابع mkdir)...

تابع پیشفرض mkdir جهت ایجاد دایرکتوری یا پوشه بکار می رود اما در صورتی که بخواهیم دایرکتوری تو در تو ایجاد کنیم این تابع کاربرد نخواهد داشت یعنی......

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

در PHP بارها پیش می آید بعد از کوئری SELECT از تابع ()mysql_fetch_assoc یا تابع ()mysql_fetch_array استفاده کنید......

نظر

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