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

时间:2012-02-01 09:49:31

标签: php regex

function strip_cdata($string)
{
    preg_match_all('/<!\[cdata\[(.*?)\]\]>/is', $string, $matches);
    return str_replace($matches[0], $matches[1], $string);
} 

我使用上面的函数从cdata中提取文本,但我不知道如何修改reg表达式以从下面的url中获取数字。

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

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

由于

5 个答案:

答案 0 :(得分:4)

这里不需要使用正则表达式:

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

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

答案 1 :(得分:3)

这是正则表达式:

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

答案 2 :(得分:2)

你也可以试试这个而不是正则表达式:

$url = 'http://blah.somesite.com/anytextcouldbehere/2828842087.html';
$info = pathinfo($url);
$num = $info['filename'];
echo $num;

答案 3 :(得分:0)

使用此正则表达式

/\d*/

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

答案 4 :(得分:0)

你可以用这个:

preg_match_all('/^http\:\/\/([\w\/\.]+)\/(<?P<num>[\d]+)\.html$/',$url,$matches);

现在这个号码在$ matches ['num']中。这是一个像这样的数组:

Array(0=>2828842087)
祝你好运