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”之间。
由于
答案 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)
祝你好运