怎么了?! preg_match只有数字

时间:2015-11-30 15:50:30

标签: php arrays string preg-match

抱歉我的英语不好。这是我的问题:

我的$ str包含以下内容:" 1122这是我的字符串[ABC:123456]"

我接受:

preg_match("/\d+/",$string,$result);
echo $result[0]; 

没关系,结果是对的。 1122

但我只想要这个数字:[ABC:123456] 不是这个:" 123这是我的字符串...."

我接受:

preg_match("/\[\d+\]/",$string,$result);
echo $result[0]; 

但结果却是...... "注意:未定义的偏移量:行中的0 ..."

有什么不对?

修改 好吧,也许有一种更简单的方法。我需要的数字总是以" G015"开头。之后是其他数字1,14,80,123,依此类推......

这始终在括号中。所以"一个文本,无论[G015123]"。

也许某人有想法,我如何获得这个号码才能继续工作?

2 个答案:

答案 0 :(得分:1)

你忘记了捕捉括号

    preg_match("/(\d+)/",$string,$result);
    echo $result[0]; 

您也可以使用 preg_match_all()来捕获所有数字

$string = "1122 Here is my string [ABC: 123456]";
preg_match_all("/(\d+)/",$string,$result);
var_dump($result); 

答案 1 :(得分:0)

你告诉它匹配集合中的一个或多个。该代码的/[\d+]/应为/([\d]+)/

如果你想匹配你的字符串中的所有#,而不仅仅是你需要使用preg_match_all()

的第一个#