0

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

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

下划线(新闻、博客、会员)之前的第一部分是动态的,所以我想获取特定部分(新闻)中的所有匹配项,然后是数字。

如下所示:

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

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

谢谢。

4

3 回答 3

1
$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;
}
于 2013-06-22T22:04:48.890 回答
1
$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

于 2013-06-22T22:06:19.333 回答
0

注意我添加了两种情况:

$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 和 Mark 的解决方案也是 99。

于 2013-06-22T22:43:41.960 回答