在数组上执行正则表达式并存储在另一个数组中

时间:2016-06-21 21:42:22

标签: php arrays foreach

这是我的代码,从字符串“ffg_LTE_2016-06-13”中提取日期“2016-06-13”

$re = '/(\d{8})|([0-9]{4}-[0-9]{2}-[0-9]{2})|([0-9]{2}-[0-9]{2}-[0-9]{4})/';
$str = "ffg_LTE_2016-06-13";
preg_match($re, $str, $matches);
$date=$matches[0];
print_r($date);

现在我想要做的是在for循环中做这样的事情,但是我遇到了将结果存储在数组中的问题。我想要做的与上面相同,但在数组中的每个elememt上做。

$files=["ffg_LTE_2016-06-13","ffg_LTE_2016-06-14"];

foreach ($files as $value) {
    print_r("<br>".$value."<br>");
}

所以我的最终结果将是

$ files_2 = [ “2016年6月13日”, “2016年6月14日”];

这是我的fiddle

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

<?php

    $files=["ffg_LTE_2016-06-13","ffg_LTE_2016-06-14"];
    $re = '/(\d{8})|([0-9]{4}-[0-9]{2}-[0-9]{2})|([0-9]{2}-[0-9]{2}-[0-9]{4})/';

    $results = [];
    foreach ($files as $value) {
        preg_match($re, $value, $matches);
        $results[] = $matches[0];
    }
    print_r($results);

?>

它只是遍历$files,将第一个匹配推送到数组$results,并打印出$results