使用Preg_Match抓取数字

时间:2012-02-27 12:46:16

标签: php regex

$str = 'title="room 5 stars"';
preg_match_all('/title="([0-9]+)"/sm', $str, $rate);

我需要从标题中获得5号。正则表达式不起作用!

如果我这样做:

preg_match_all('/title="([0-9]+)"/sm', $str, $rate);

我明白了:

room 5 stars

但是,这个不会返回任何内容:

'/title="([0-9]+)"/sm'

我哪里出错?

3 个答案:

答案 0 :(得分:3)

你没有考虑数字周围的字,试试这个:

$str = 'title="room 5 stars"';
preg_match_all('/title=".*(\d+).*"/', $str, $rate);

// The number is then in $rate[1][0];

答案 1 :(得分:1)

您忘记在号码前后匹配文字。 试试:/title=".*([0-9]+).*"/

PS:你不需要 m s 选项

答案 2 :(得分:0)

*是一个贪婪的比赛,有时可能会给出错误的结果。

您可以使用/title=".*?(\d+).*?"/这是一个懒人匹配,并搜索最少的字符。

您还可以尝试使用此免费工具进行正则表达式匹配:RegExr