我在PHP数组中有各种值,如下所示:
$values = array("news_24", "news_81", "blog_56", "member_55", "news_27");
下划线(新闻,博客,成员)之前的第一部分是动态的,所以我希望获得特定部分( news )中的所有匹配,然后是数字。
如下所示:
$section = "news";
$matches = preg_match('$section/[_])GETNUMBER/', $values);
这将返回24和27,但只有新闻出现在下划线之前。
感谢。
答案 0 :(得分: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;
}
答案 1 :(得分: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
答案 2 :(得分: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而马克的解决方案也是99。