在下划线后返回数字,动态先行


Return number after an underscore, dynamic preceeding

我在PHP数组中有各种值,如下所示:

$values = array("news_24", "news_81", "blog_56", "member_55", "news_27");

下划线之前的第一部分(news,blog,member)是动态的,所以我想在特定的部分中获得所有匹配项(news,然后是数字)。

如下所示:

$section = "news";
$matches = preg_match('$section/[_])GETNUMBER/', $values);

这将返回24和27,但仅限于下划线之前的新闻。

谢谢。

$values = array("news_24", "news_81", "blog_56", "member_55", "news_27");
$section = "news"; 
foreach($values as $value) {
    $matches = preg_match("/{$section}_(''d+)/", $value, $number);
    if ($matches)
        echo $number[1], PHP_EOL;
}
$values = array("news_24", "news_81", "blog_56", "member_55", "news_27");
function func($type){
    $results = null;
    foreach($values as $val){
        $curr = explode('_',$val);
        if($curr[0]==$type){
            $results[] = $curr[1];
        }
    }
    return $results;
}
$News = func('news');

祝你好运!:P

注意,我添加了两种情况:

$values = array ("news_24", "news_81", "blog_56", "member_55", "news_27",
                 "blognews_99", "news_2012_12");
$section = "news";
preg_match_all("/^{$section}_(''d+)'$/m", implode("'n", $values), $matches);
print_r($matches[1]);

内爆可能不是非常有效,但它的代码更少。不同之处在于匹配&正则表达式。

此解决方案仅输出

Array
(
    [0] => 24
    [1] => 81
    [2] => 27
)

而其他人也输出2012和马克的解决方案也99。