我在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。