1

我试图只从字符串中取出两个括号 ([ ]) 之间的数字。

这是我的代码:

$str = "[#123456] Some text";
preg_match('/^[#(?P<number>\w+)]/', $string, $matches);

// Returns 123456
echo $matches['number'];

有人能帮我解决这个问题吗?

编辑:我澄清了我的问题。我只需要得到括号之间的数字。到目前为止的回复会给我整个字符串中的数字。

4

4 回答 4

2

如果您需要数字以及它们周围的大括号,您可以使用这个正则表达式:

preg_match('/\[#\d+\]/U', $str, $matches);
echo $matches[0];

否则,使用

preg_match('/\[#(\d+)\]/U', $str, $matches);
echo $matches[1];
于 2012-07-30T15:27:45.340 回答
0

用这个:

preg_match('/[0-9]*/', $string, $matches);
var_dump($matches);

有关正则表达式的更多信息,请单击此处

于 2012-07-30T15:24:38.253 回答
0

或者...(编辑代码以显示为代码)

$str = preg_replace('/[^0-9]/', '', $str);
于 2012-07-30T15:27:05.193 回答
0

这将仅在此上下文中返回数字 [#....]

$str = "[#123456] Some text";
preg_match('/\[#(\d+)\]/', $str, $matches);
var_dump($matches);
echo $matches[1]; // 123456
于 2012-07-30T15:34:07.067 回答