2016-06-21 48 views
0

这是我的代码,它可以提取字符串中的日期“2016年6月13日”“ffg_LTE_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循环中做这样的事情,但我有问题将结果存储在数组中。我想要做的是与上面相同,但在阵列中的每个元素上都做。

$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

为什么不jiust在下划线上爆炸 – 2016-06-21 21:50:12

回答

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

+0

tks,你能简单地解释一下这个'$ results [] = $ matches [0];'因为我认为我会这样做'$ results = $ matches [0] ''或array_push($ results,$ matches [0]);'但也许我应该这样做'array_push($ results [],$ matches [0]);''我基本上在结果​​中缺少'[]' ' – HattrickNZ

+1

@HattrickNZ'$ results [] = $ matches [0];'相当于'array_push($ results,$ matches [0]);'作为手册页的状态http://php.net/manual/ en/function.array-push.php – 2016-06-21 22:18:42

+0

tks这里是[fiddle](http://phpfiddle.org/main/code/fba7-9m6w) – HattrickNZ