如何获取“.html”字符串之前的数字的最后一位数字

时间:2011-09-13 17:49:55

标签: php regex

有一个字符串,例如: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);

4 个答案:

答案 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有点生锈