نمایش نتایج 1 تا 2 از 2

نام تاپیک: تبدیل preg_replace به preg_replace_callback

  1. #1

    تبدیل preg_replace به preg_replace_callback

    سلام.
    من یه کد دارم که تاریخ میلادی رو برای یه اسکریپت به شمسی تبدیل میکنه اما بعد از آپدیت نسخه PHP دیگه کار نمیکنه
    preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead.


    اومدم تغییرات رو اعمال کنم و تبدیل preg_replace به preg_replace_callback رو انجام بدم که متاسفانه نشد.

    بخشی از کد که ارور مربوط به اونه به صورت زیره:
    $pattern=array(
    "#Y#",//full year
    "#y#",//short year

    "#M#",//month short name
    "#F#‎‎‎‎‎‎‎",//month full name
    "#m#",//month number 0 lead
    "#n#",//month number
    "#t#",//days in month

    "#l#",//full week day
    "#D#",//short week day

    "#d#",//day number of month
    "#j#",//day number of month

    "#a#",//AM/PM short view
    "#A#",//AM/PM full view

    "#([^yYMmDdAa])#e"
    );
    $replace=array(
    $d->ENnum2FA($converted[0]),//year 13xx
    $d->ENnum2FA(substr($converted[0],2),true),//year xx lead zero

    $d->shmonths[$converted[1]],//month name
    $d->months[$converted[1]],//month name
    $d->ENnum2FA($converted[1],true), //month number
    $d->ENnum2FA($converted[1]), //month number
    //$converted[1],
    $d->j_days_in_month[$converted[1]],

    $d->days[strtolower(gmdate("D",$stamp))],//week day {full view}
    $d->ldays[strtolower(gmdate("D",$stamp))],//week day ‍‍{short view}

    $d->ENnum2FA($converted[2],true),//day of month
    $d->ENnum2FA($converted[2],true),//day of month

    $d->pmam[gmdate('a',$stamp)],
    $d->pmam[gmdate('A',$stamp)],

    "\$d->ENnum2FA(gmdate('\\1',\$stamp))"
    );

    $date= preg_replace($pattern,$replace,$format);


    من با توجه به آموزش بعضی از سایتا تغییرات زیر رو اعمال کردم:
    1. "#([^yYMmDdAa])#e" ===> "#([^yYMmDdAa])#"

    2. "\$d->ENnum2FA(gmdate('\\1',\$stamp))" ===> "\$d->ENnum2FA(gmdate('\$match[1]',\$stamp))"

    3. $date= preg_replace($pattern,$replace,$format); ===> $date=preg_replace_callback($pattern, function($match) {
    return $replace;
    }, $format);


    در نهایت کد به صورت زیر شد اما هنوز کار نمیکنه. به نظرتون مشکل از کجاست؟
    $pattern=array(
    "#Y#",//full year
    "#y#",//short year

    "#M#",//month short name
    "#F#‎‎‎‎‎‎‎",//month full name
    "#m#",//month number 0 lead
    "#n#",//month number
    "#t#",//days in month

    "#l#",//full week day
    "#D#",//short week day

    "#d#",//day number of month
    "#j#",//day number of month

    "#a#",//AM/PM short view
    "#A#",//AM/PM full view

    "#([^yYMmDdAa])#"
    );
    $replace=array(
    $d->ENnum2FA($converted[0]),//year 13xx
    $d->ENnum2FA(substr($converted[0],2),true),//year xx lead zero

    $d->shmonths[$converted[1]],//month name
    $d->months[$converted[1]],//month name
    $d->ENnum2FA($converted[1],true), //month number
    $d->ENnum2FA($converted[1]), //month number
    //$converted[1],
    $d->j_days_in_month[$converted[1]],

    $d->days[strtolower(gmdate("D",$stamp))],//week day {full view}
    $d->ldays[strtolower(gmdate("D",$stamp))],//week day ‍‍{short view}

    $d->ENnum2FA($converted[2],true),//day of month
    $d->ENnum2FA($converted[2],true),//day of month

    $d->pmam[gmdate('a',$stamp)],
    $d->pmam[gmdate('A',$stamp)],

    "\$d->ENnum2FA(gmdate('\$match[1]',\$stamp))"
    );
    $date=preg_replace_callback($pattern, function($match) {
    return $replace;
    }, $format);

  2. #2
    کاربر جدید
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    فرامحتوا
    پست
    6

    نقل قول: تبدیل preg_replace به preg_replace_callback

    از این استفاده کن برای تبدیل تاریخ:
    https://github.com/hekmatinasser/verta

تاپیک های مشابه

  1. سوال: در رابطه با preg_replace
    نوشته شده توسط mand1404 در بخش PHP
    پاسخ: 5
    آخرین پست: سه شنبه 23 اردیبهشت 1393, 20:36 عصر
  2. سوال: استفاده از preg_replace
    نوشته شده توسط msdn1223 در بخش PHP
    پاسخ: 9
    آخرین پست: شنبه 05 اسفند 1391, 13:41 عصر
  3. راهنمای در مورد preg_replace
    نوشته شده توسط r3zat72 در بخش PHP
    پاسخ: 0
    آخرین پست: دوشنبه 05 تیر 1391, 17:49 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •