2016-10-22 3 views
0

позволяет сказать, что у меня есть это следующее значение, и я хочу, чтобы иметь годыКак проверить, если число имеет 4 цифровых

July 1967 USA 
14 March 1979 France 
23 June 1976 France 
from the 21 October 2016 

Пусть говорят, это значение $year2 я использую is_numeric, но не дает правильный результат как всегда есть прочь использовать preg_replace

  $year2 = explode(" ",$year1); 
      if (!is_numeric($year2[2])) { 

       if (! isset($year2[1])) { 
       $year2[1] = null; 
       } 
      $year = $year2[1]; 
      } else { 
       if (! isset($year2[2])) { 
       $year2[2] = null; 
       } 
       $year = $year2[2]; 
       } 
      } 

echo $year; 

выходах иногда день например: 21 вместо лет 2016 года я есть попробовать это без успеха $year = preg_match('/\d{4}/g',$year2);

+0

я рекомендовал бы использовать регулярное выражение –

+0

, как это сделать пожалуйста ? –

+1

Возможный дубликат [Регулярное выражение для извлечения года из строки] (http://stackoverflow.com/questions/8110077/regular-expression-to-extract-the-year-from-a-string) –

ответ

0

Если вы хотите, чтобы год от каждой строки (как я понял ваш вопрос), вы можете использовать preg_match()

<?php 

$values = [ 
    'July 1967 USA', 
    '14 March 1979 France', 
    '23 June 1976 France', 
    'from the 21 October 2016', 
]; 
foreach ($values as $value) { 
    $pattern = '/(^|\s)(\d{4})(\s|$)/m'; 
    preg_match($pattern, $value, $match); 
    echo $match[2] . "\n"; 
} 

Выход:

1967 
1979 
1976 
2016 
Смежные вопросы