使用正则表达式格式化数组元素


Formatting array element using regex

我有一个包含很多元素的数组,

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

我的目的是遍历所有数组元素并检查所有Title的。标题格式应为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']);
        }
    }
}

我感到困惑的是我将如何检查这与我需要它是什么?

欢迎指教。

谢谢

不使用正则表达式如何?如:

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})