пятница, 4 апреля 2014 г.

Извлечь табельный номер из строки

Задание. Из строк 'Таб. № 101', 'Таб.  №  102', 'Таб. 103' посредством функции preg_match() извлечь табельные номера и поместить их в переменную $tabel_num_arr.

Решение:
$strings = array(
'Таб. № 101',
'Таб.  №  102',
'Таб. 103',
);
$matches = array();
$tabel_num_arr = array();
foreach($strings as $str) {
    $is_tabel_num = preg_match('/Таб\. *(?:№)? *(\d+)/', $str, $matches);
    if ($is_tabel_num === 1 && $matches[1]) {
        $tabel_num_arr[] = $matches[1];
    }
}
var_dump($tabel_num_arr);
/*
Результат:
array
  0 => string '101' (length=3)
  1 => string '102' (length=3)
  2 => string '103' (length=3)
*/

Примечательным здесь является регулярное выражение 
/Таб\. *(?:)? *(\d+)/
В этом регулярном выражении важным моментом является незахватываемая группа, обрамляемая символами (?:   ) 
Выражение, обрамленное этими символами, не попадает в массив $matches.

Комментариев нет:

Отправить комментарий