نوب
3 سال پیش توسط نوب مطرح شد
2 پاسخ

ایده برای بهینه تر نوشتن این کد در لاراول

@mehranmarandi90
@mhyeganeh
@ali.bayat
@hesammousavi
سلام
قطعه کد زیر را توی لاراول نوشتم در کنترلر
کارش اینه که کاربر وقتی لیستی از موبایل ها را وارد یک textarea میکنه این کد شماره های خراب و ردیف هایی که اصلا شماره نیستن را حذف میکنه و همینور ردیف های تکراری را و در نهایت یک لیست شماره های موبایل تمیز تحویل میده

خواستم بدونم آیا راهی دارین که این کد بهینه تر بشه و روی تعداد شماره های بالای 100000 تا هم راحت جواب بده ؟
من اومدم برای ردیف های زیاد از Arraychunk استفاده کردم و اگر راه بهتری دارید بگید
سپاس

        $text = trim($request->mobiles);
        $textAr = explode("\r\n", $text);
        $product_list = [];
        foreach (array_chunk($textAr, 10) as $numbers) {
            foreach ($numbers as $line) {
                $persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
                $english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
                $line = str_replace($persian, $english, $line);
                if (preg_match('/^(?:98|\+98|0098|0)?9[0-9]{9}$/', $line, $match)) {
                    $product_list[] = $match;
                }
            }
        }
        $js = json_encode($product_list);
        $js2 = str_replace(str_split('[]"'), "", $js);
        $js3 = explode(",", $js2);
        $textAr_unique = array_unique($js3);
        $final_numbers_text = implode("\n", $textAr_unique);

ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
2

salam vaghteton bekhyer!

$re = '/(0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}/m';
$str = '09174811484
9174811484
+989174811484';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

in ye array return mikone ke faghat shomare mobile toshe
age mikhay duplicate nabashe
hamaro posh *** to 1 array injori filed haye tekrari pak mishe


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

@Rp76
سپاس بابت پیشنهاد
اجراش کردم و به این دلیل هنوز بهترین پاسخ نزدم که ببینم پیشنهاد دوباره ای برای بهتر شدن و سریعتر شدن کد داری ؟ 😁😁😁
الان من با کدی که نوشتم تست کردم 700000 تا شماره را راحت توی کمتر از 0.6ثانیه میزنه تو دیتابیس و تمیزشونم میکنه
میخوام ببینم میشه سرعتشو بالاترم برد ؟
چون چیزی که مینویسم همش با تعداد ردیف و تعداد شماره خیلی بالا کار داره
سپاس


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام