使用正则表达式和preg_match_all获取值

时间:2012-11-09 07:09:53

标签: php regex preg-match-all

我有字符串数据

$pages = "mangaName=&authorArtist=asdas123s&genres=sn&genres[23]=on&genres[29]=on&status=&chrome=&submit=+";

function get_h1($file){
    $h1tags = preg_match_all('/\[(\w*)\]/is',$file,$patterns);
    $res = array();
    array_push($res,$patterns[2]);
    array_push($res,count($patterns[2]));
    return $res;
}

我希望获得流派[23],流派[29]

的数字

[0] => 23 [1] => 29

2 个答案:

答案 0 :(得分:1)

$pages = "mangaName=&authorArtist=asdas123s&genres=sn&genres[23]=on&genres[29]=on&status=&chrome=&submit=+";

parse_str($pages, $parsed);

var_dump(array_keys($parsed['genres'])); // array(2) { [0]=> int(23) [1]=> int(29) }

答案 1 :(得分:0)

zerkms的答案是正确的,但是如果你真的想使用正则表达式,请用这个改变你的:

preg_match_all('/\[(\w*?)\]/is',$file,$patterns);
 note the non-greedy __^