سؤال

أنا لست جيدا جدا مع التعبيرات ... نظرت إلى بعض البرامج التعليمية عبر الإنترنت، لكنني ما زلت ألا أحصل عليه. في الأساس، أحاول العودة TRUE إذا تم تنسيق سلسلة مثل هذا:

4 أرقام + الفضاء + 2 أرقام وتحويله إلى موعد.

لذلك، سوف تبدو السلسلة: 2010 02, ، وأنا أحاول الإخراج February, 2010.

أحاول استخدام preg_match, ، لكنني أظل

{ليس معدل ...

تعديل

في الردود الأولى الأولى، غيرت ذلك، لكنني أحصل على خطأ فادح في أول خطأ معدل محدد غير معروف في الثانية:

if(preg_match('/([0-9{4}]) ([0-9]{2})/iU',$path_part)) {
    $path_title = date("F, Y",strtotime(str_replace(" ","-", $path_title)));
}

أيضا، حاول فقط الإصدار الأكثر تعمقا في الرد الأول، بينما يزول الخطأ، لا يغير الإخراج ...

$path_part = '2010 02';
if(preg_match('/^(\d{4}) (\d{2})$/',$path_part,$matches)) {
   $path_title = $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}
هل كانت مفيدة؟

المحلول

أحاول العودة TRUE إذا تم تنسيق سلسلة مثل هذا: 4 أرقام + مساحة + 2 أرقام

return preg_match(/^\d{4} \d{2}$/,$input);

للتحويل إلى التاريخ، يمكنك تجربة شيء مثل:

$mon = array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$date_str = "2010 02";

if(preg_match('/^(\d{4}) (\d{2})$/',$date_str,$matches))
{
        print $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}

نصائح أخرى

جرب هذه...

preg_match('/([0-9{4}]) ([0-9]{2})/iU', $input);

دون وجود أي تفاصيل حول الكود الفعلي الخاص بك، يجب أن تعمل ما يلي:

<?php

$str = '2010 02';

$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

if(preg_match('/([0-9]{4}) ([0-9]{2})/', $str, $match) == 1){
    $year = $match[1];
    $month = (int) $match[2];
    echo $months[$month - 1] . ', ' . $year;
}else{
    //Error...
}

?>
$in = "2010 02";
if(preg_match('/([0-9]{4}) ([0-9]{2})/i', $in, $matches)) {
        echo date("F Y", strtotime($matches[2] . "/1/" . $matches[1]));
}

تستطيع ايضا استخذام T-RegX. مكتبة

$string = '2010 02';

pattern('\d{4} \d{2}')->match($string)->first(function (Match $match) 
{
    $year = $match->group(1);
    $month = $match->group(2);
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top