PHP从字符串中查找月份和年份?

PHP从字符串中查找月份和年份?,php,regex,preg-match,Php,Regex,Preg Match,这是我今年以来一直在尝试的任何类型的字符串 <?php $variable = [ 'Well year is 1967 month jan', 'year is 1876 but month January', 'HOLLA April Evening 2017', 'DOLLA-May 2020', 'OH-YESApril 2019 (IGNORE)', 'Just a sample String with

这是我今年以来一直在尝试的任何类型的字符串

<?php

  $variable = [
      'Well year is 1967 month jan',
      'year is 1876 but month January',
      'HOLLA April Evening 2017',
      'DOLLA-May 2020',
      'OH-YESApril 2019 (IGNORE)',
      'Just a sample String without year ok lets just add 1'
  ];
  foreach ($variable as $value) {
      if(ContainsNumbers($value)){
           $input = preg_replace('/^[^\d]*(\d{4}).*$/', '\1', $value);
            $input = (int)$input;
                if($input>1000 && $input<2100)
                {
                   var_dump($input);
                }                   
      } 
  }
  function ContainsNumbers($String){
    return preg_match('/\\d/', $String) > 0;
}
?>
我现在唯一想要的就是从字符串中得到一个月。 这个月我从中得到了帮助,但到目前为止没有运气:- 我不知道在$data中添加什么


传统上,几乎每个人都会调用第三个参数来preg_match$matches,所以这里我将使用命名法

如果正则表达式匹配,则第三个参数将是一个数组,其中每个项都有数字索引,如果有命名匹配项,则还有命名索引。因此,您正在寻找:

ifpreg_匹配$ptr,$str,$matches{ var_dump$匹配; } 这将给你:

Array
(
    [0] => December 2012 Name: Jack Brown
    [month] => December
    [1] => December
    [year] => 2012
    [2] => 2012
    [3] => Name: Jack Brown
    [name] =>  Jack Brown
    [4] =>  Jack Brown
    [5] =>  Jack Brown
)

Chris haas已经非常清楚地解释了这一点,但是任何人都希望使用数组方法,那么请使用这个:-

<?php
$variable = [
      'Well year is 1967 month jan',
      'year is 1876 but month January',
      'HOLLA April Evening 2017',
      'DOLLA-May 2020',
      'OH-YESApril 2019 (IGNORE)',
      'Just a sample String without year ok lets just add 1'
  ];
  $months = array(
    'January' => 'jan',
    'February' => 'feb',
    'March' => 'mar',
    'April' => 'apr',
    'May' => 'may',
    'June' => 'jun',
    'July ' => 'jul',
    'August' => 'aug',
    'September' => 'sep',
    'October' => 'oct',
    'November' => 'nov',
    'December' => 'dec',
);
  foreach ($variable as $string) {
      foreach($months as $key => $value){
            if (strpos($string, $value) !== false) {
               var_dump($value) ;
            }
              if (strpos($string, $key) !== false) {
                 var_dump($value) ;
            }
  }

}
die();

?>

Array
(
    [0] => December 2012 Name: Jack Brown
    [month] => December
    [1] => December
    [year] => 2012
    [2] => 2012
    [3] => Name: Jack Brown
    [name] =>  Jack Brown
    [4] =>  Jack Brown
    [5] =>  Jack Brown
)
<?php
$variable = [
      'Well year is 1967 month jan',
      'year is 1876 but month January',
      'HOLLA April Evening 2017',
      'DOLLA-May 2020',
      'OH-YESApril 2019 (IGNORE)',
      'Just a sample String without year ok lets just add 1'
  ];
  $months = array(
    'January' => 'jan',
    'February' => 'feb',
    'March' => 'mar',
    'April' => 'apr',
    'May' => 'may',
    'June' => 'jun',
    'July ' => 'jul',
    'August' => 'aug',
    'September' => 'sep',
    'October' => 'oct',
    'November' => 'nov',
    'December' => 'dec',
);
  foreach ($variable as $string) {
      foreach($months as $key => $value){
            if (strpos($string, $value) !== false) {
               var_dump($value) ;
            }
              if (strpos($string, $key) !== false) {
                 var_dump($value) ;
            }
  }

}
die();

?>

string(3) "jan"
string(3) "jan"
string(3) "apr"
string(3) "may"
string(3) "apr"