Php Preg#u match不';在尝试获取字符串中的数字时无法工作
哼。。我的意思是我不能让它工作。。。 这就是我所做的Php Preg#u match不';在尝试获取字符串中的数字时无法工作,php,regex,preg-match,Php,Regex,Preg Match,哼。。我的意思是我不能让它工作。。。 这就是我所做的 $url = 'http://test/test/9244349'; $test = preg_match('#\d*#', $url, $matches); 数组(大小=1) 0=>字符串“”(长度=0) 我只想捕捉“9244349”,但我不明白它为什么不起作用。将*更改为+,它会起作用尝试将*替换为+,如果要匹配数字,模式中也没有匹配的点,零位,对吗 preg_match('/\d+/','http://test/test/924434
$url = 'http://test/test/9244349';
$test = preg_match('#\d*#', $url, $matches);
数组(大小=1)
0=>字符串“”(长度=0)
我只想捕捉“9244349”,但我不明白它为什么不起作用。将
*
更改为+
,它会起作用尝试将*
替换为+
,如果要匹配数字,模式中也没有匹配的点,零位,对吗
preg_match('/\d+/','http://test/test/9244349',$matches);
echo $matches[0];//output:9244349
这是
让我们玩正则表达式引擎:
表示任意位数。包括零\d*
- 我们从字符串的开头开始。我们看到一个
h
与h
不匹配李>\d
- 但是-我们也可以匹配
的零重复。因此\d
之前的空字符串匹配h
- 我们已经到了正则表达式的末尾,找到了匹配项李>
- 成就解锁李>
- (当然,它是零个字符的匹配,但这没关系。与Perl兼容的正则表达式将始终返回最左边的可能匹配,即使前面的字符串中可能还有更长的匹配)
*
更改为+
,以强制至少一个数字匹配,然后其他数字将跟随
你也可以使用
preg\u match\u all()
,但是你会得到很多空匹配,两个非数字之间的每个位置都有一个匹配…谢谢,我读了一篇关于regex的小教程。如果x+至少出现一次,它就表示x+用于获取x。。那么为什么它在这里不起作用呢?在这种情况下有效,但是http://test/test/9244349?id=123
将返回9244349?id=123
@EliasVanOotegem:是的,但是如果您是一个聪明的人,这可以处理,我想在(int)basename($url)中处理这个问题只要我知道如何构建URL,代码>就是这样
echo basename($url);