0

我正在尝试使用 preg_match 仅提取数字。我已经尝试了以下代码,但它不起作用。任何想法如何只获得号码?

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

5 回答 5

0

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

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

于 2012-08-15T08:00:54.063 回答
0

该符号^指定行的开始和$- 行的结束。所以你的 RegExp 完全错误。你应该写

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

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

于 2012-08-15T08:02:26.480 回答
0

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

于 2012-08-15T08:03:08.013 回答
0

你有没有尝试过?

preg_match_all('[0-9]+', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
于 2012-08-15T08:03:34.627 回答
0

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

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

这将匹配

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

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

于 2012-08-15T08:27:32.537 回答