Php 需要一个reg表达式来使用preg_match_all从url获取数字

Php 需要一个reg表达式来使用preg_match_all从url获取数字,php,regex,Php,Regex,具体来说,我需要从上面的url获取“2828842087”。它将始终是数字,并且位于最后一个“/”和“.html”之间 谢谢使用这个正则表达式 http://blah.somesite.com/anytextcouldbehere/2828842087.html 无需在此处使用regexp: /\d*/ preg_match_all('/\d*/is', $string, $matches); 您也可以尝试使用此选项代替正则表达式: $url = 'http://blah.somesite

具体来说,我需要从上面的url获取“2828842087”。它将始终是数字,并且位于最后一个“/”和“.html”之间

谢谢使用这个正则表达式

http://blah.somesite.com/anytextcouldbehere/2828842087.html

无需在此处使用regexp:

/\d*/

preg_match_all('/\d*/is', $string, $matches);

您也可以尝试使用此选项代替正则表达式:

$url = 'http://blah.somesite.com/anytextcouldbehere/2828842087.html';

$data = parse_url($url);
$number = basename($data['path'], '.html');

下面是正则表达式:

$url = 'http://blah.somesite.com/anytextcouldbehere/2828842087.html';
$info = pathinfo($url);
$num = $info['filename'];
echo $num;
您可以使用以下选项:

$url = 'http://blah.somesite.com/anytextcouldbehere/2828842087.html';
if( preg_match('@/(\d+)\.html$@', $url, $matches) ){
    $number = $matches[1];
}

祝你好运

cdata和URL的关系如何?请尝试preg\u match\u all(“/\d+/is',$string,$matches);我只是以这个函数为例。他们没有关系。我将创建一个新函数,从url获取这些数字。我只需要reg表达式。不能在XML上使用正则表达式。如果不存在匹配非数字文件名的问题,我可能会使用它。谢谢@dfsq!工作得很好。这比使用preg_replace_all快吗?这无法与regex相比,pathinfo即使对非数字也有效如果您的目标是仅获取文件名,则pathinfo更合适,因为如果相应的url包含其他数字,则会修改regex表达式
$url = 'http://blah.somesite.com/anytextcouldbehere/2828842087.html';
if( preg_match('@/(\d+)\.html$@', $url, $matches) ){
    $number = $matches[1];
}
preg_match_all('/^http\:\/\/([\w\/\.]+)\/(<?P<num>[\d]+)\.html$/',$url,$matches);
Array(0=>2828842087)