preg_match仅限数字

时间:2012-08-15 07:59:18

标签: php regex preg-match

我正在尝试使用preg_match来仅提取数字。我尝试了fllowing代码,但它不起作用。任何想法如何只得到数字?

preg_match_all('/^[0-9]+$/i', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);

5 个答案:

答案 0 :(得分:0)

您的正则表达式不应包含^$符号,因为它们表示字符串的开头和结尾,字符串中间不存在。

取出它们,正则表达式应该可以正常工作。

答案 1 :(得分:0)

符号^指定行的生成和$ - 行结束。所以你的RegExp完全错了。你应该写

preg_match_all('/\d+/', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);

此外,您不需要指定i修饰符,这意味着使用大小写忽略模式进行搜索。

答案 2 :(得分:0)

您在正则表达式中使用了^$^表示匹配字符串的开头$表示匹配字符串的结尾。因此,您编写了一个正则表达式来匹配仅包含数字的字符串;即你的正则表达式是字符串的开头然后数字然后是字符串的结尾。删除这些字符,您就可以匹配一个数字。

答案 3 :(得分:0)

你试过吗?

preg_match_all('[0-9]+', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);

答案 4 :(得分:0)

这是你应该使用的正则表达式:

/<userinfo>.*?(\d+).*?<\/userinfo>/

这将匹配

<userinfo>Jsome text here 16586 more text here.</userinfo>

并且返回的数组的第二个元素(array[1])将具有您需要的数字。 (16586)