有一个字符串,例如:http://address.com/sef-title-of-topic- 1111 .html
无论如何我用php中的regexp无法获得 1111 。可能吗?怎么样?
我的代码:
$address = 'http://address.com/sef-title-of-topic-1111.html';
preg_match('#-(.*?)\.html#sim',$address,$result);
答案 0 :(得分:3)
如果url示例是它们将始终显示的方式(即以连字符,数字,.html结尾),那么这应该有效:
$str = "http://address.com/sef-title-of-topic-1111.html";
preg_match('#.*-(\d+)\.html#', $str, $matches);
print_r($matches);
如果它们与您在问题中提供的模式不一致,请通过显示$address
值的替代值来澄清。
答案 1 :(得分:1)
如果你知道扩展名绝对是.html(而不是.htm)那么你可以使用
$lastNos= substr($input, -9, -4);
显然是一个简单的解决方案,但你没有说明为什么需要正则表达式。
答案 2 :(得分:0)
如果URL始终采用这种格式,我会使用str_replace剥离.html然后用“ - ”爆炸并找到最后一块。
当然所有这一切都假设网址始终采用这种格式。
答案 3 :(得分:0)
如果格式始终相同,则不需要正则表达式。
$url = "http://address.com/sef-title-of-topic-1111.html";
echo $str = strrev(array_shift(array_reverse(explode(".", array_shift(explode("-",strrev($url)))))));
编辑:对不起我的php有点生锈