2016-10-12 2 views
-2

У меня есть массив, который содержит довольно много элементов,Форматирование элемента массива с помощью регулярных выражений

Array 
(
    [0] => Array 
     (
      [Title] => 16MK002 
      [Supplier] => John Lewis 
      //other data 
     ) 
    //other elements   
) 

Моя цель состоит в том, чтобы перебрать все элементы массива и проверить все заголовка. Название должно быть в формате YYSSSCCC, где YY - год, SSS - это первые 3 письма Поставщика, а CCC - это счет. Таким образом, выше должно быть 16JOH001, а следующее с тем же поставщиком будет 16JOH002. В большинстве случаев этот формат уже соблюдается, но, как и в примере выше, иногда это не так. Если формат уже правильный, нет необходимости касаться его или сбросить счет.

Таким образом, чтобы добраться туда, где я должен быть, я начал как этот

foreach($csvArray as $k => $row) { 
    foreach($row as $key => $value) { 
     if($csvArray[$k]['Title']) { 
      print_r($csvArray[$k]['Title']); 
     } 
    } 
} 

Где я запутался, как я собираюсь проверить это против того, что мне нужно, чтобы это было?

Любые советы, оцененные.

Thanks

+1

Пожалуйста, наведите указатель мыши на тег регулярного выражения и щелкните по нему, или щелкните по тегу regex и щелкните по дополнительной информации. Вы перейдете на страницу, полную информации о том, как вы можете написать некоторые тестовые данные и попробовать некоторые регулярные выражения. http://stackoverflow.com/tags/regex/info, попробуйте этот инструмент: http://www.regexplanet.com/advanced/php/index.html – dlamblin

ответ

1

Как насчет того, чтобы не использовать регулярное выражение? Как:

if (strlen($csvArray[$k]['Title']) == 8) { 
    $Y2K = substr($csvArray[$k]['Title'],0,2); 
    $sup = substr($csvArray[$k]['Title'],2,3); 
    $cnt = substr($csvArray[$k]['Title'],5,3); 
    if (strtoupper($sup) != strtoupper(substr($csvArray[$k]['Supplier'],0,3))) { 
    # doing something about this 
    } 
} else { 
    # doing something else about this 
} 

В противном случае вы будете хотеть использовать что-то вроде этого: (\d{2})([A-Z]{3})(\d{3}). Попробуйте нажать PHP Button on this page.

Смежные вопросы