我正在尝试使用preg_match来仅提取数字。我尝试了fllowing代码,但它不起作用。任何想法如何只得到数字?
preg_match_all('/^[0-9]+$/i', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
答案 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)