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

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

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

تابع محاسبه طول رشته با یونیکد utf-8...

دو تابع جهت بررسی طول یک رشته utf8. function strlen_utf8( $str ) { return mb_strlen( $str, 'UTF-8' ); }   //or... function strlen_utf8( $str ) { $c = 0; $len = strlen( $str ); ...

ایجاد رشته تصادفی...

این تابع رشته تصادفی به طول آرگومان ورودی(len$) تولید می‌کند. function rnd_string($len = 24) { $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; $strlen = strlen($s...

پارسر قدرتمند شناسایی کلمات یک رشته...

تابع زیر یک پارسر قدرتمند جهت شناسایی کلمات یک رشته و جداسازی آنهاست. این تابع یکی از توابع کاری موتور جستجوی گروه ما(وی2) است. تمامی بهینه سازیها در این تابع رعایت شده که هر چند ساده است!......

مرتب سازی آرایه های چند متغیری و چند بعدی در php...

تابع زیر مرتب سازی یک آرایه با چندین مقدار برای هر ایندکس و آرایه چند بعدی را با اعمال محدودیت انجام میدهد. میتوانید با اندکی تغییر آنرا پیشرفته تر کنید!......

نظر

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