Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取在';之前的最后数字;。html';一串_Php_Regex - Fatal编程技术网

Php 如何获取在';之前的最后数字;。html';一串

Php 如何获取在';之前的最后数字;。html';一串,php,regex,Php,Regex,有一个字符串,例如:1111.html 无论如何,我无法用php中的regexp获得1111。可能吗?怎么做 我的代码: $address = 'http://address.com/sef-title-of-topic-1111.html'; preg_match('#-(.*?)\.html#sim',$address,$result); 如果URL总是这种格式,我会使用str_replace去掉.html,然后用“-”分解,找到最后一块 当然,所有这一切都是假设URL始终是这种格式。如

有一个字符串,例如:1111.html

无论如何,我无法用php中的regexp获得1111。可能吗?怎么做

我的代码:

$address = 'http://address.com/sef-title-of-topic-1111.html';

preg_match('#-(.*?)\.html#sim',$address,$result);

如果URL总是这种格式,我会使用str_replace去掉.html,然后用“-”分解,找到最后一块


当然,所有这一切都是假设URL始终是这种格式。

如果URL始终是这种格式,我将使用str_replace去掉.html,然后用“-”分解,找到最后一个部分


当然,所有这些都是假设URL始终采用这种格式。

如果URL示例是它们始终显示的方式(即以连字符、数字、.html结尾),那么这应该可以:

$str = "http://address.com/sef-title-of-topic-1111.html";

preg_match('#.*-(\d+)\.html#', $str, $matches);
print_r($matches);

如果它们不总是与您在问题中给出的模式相匹配,则通过显示
$address
值的替代值来澄清。

如果url示例是它们始终显示的方式(即以连字符、数字、.html结尾),则这应能起作用:

$str = "http://address.com/sef-title-of-topic-1111.html";

preg_match('#.*-(\d+)\.html#', $str, $matches);
print_r($matches);

如果它们不总是与您在问题中给出的模式相匹配,那么请通过显示
$address
值的替代值来澄清。

如果您知道扩展名肯定是.html(例如不是.htm),那么您可以使用

$lastNos= substr($input, -9, -4);

显然这是一个简单的解决方案,但您没有指定为什么需要regex。

如果您知道扩展名肯定是.html(例如不是.htm),那么您可以使用

$lastNos= substr($input, -9, -4);

显然,这是一个简单的解决方案,但您尚未指定为什么需要正则表达式。

如果格式始终相同,则不需要正则表达式

$url = "http://address.com/sef-title-of-topic-1111.html";

echo $str = strrev(array_shift(array_reverse(explode(".", array_shift(explode("-",strrev($url)))))));

编辑:对不起,我的php有点生疏了

如果格式总是一样的话,你就不需要正则表达式了

$url = "http://address.com/sef-title-of-topic-1111.html";

echo $str = strrev(array_shift(array_reverse(explode(".", array_shift(explode("-",strrev($url)))))));

编辑:对不起,我的php有点生疏了

更具体一点。这些数字是固定长度的吗?为什么不能只使用$\u GET变量?URL是否总是采用上述格式?(带破折号,最后一个总是数字等?更具体一点。数字是设定的长度吗?为什么不能只使用$\u GET变量?URL是否总是采用上述格式?(带破折号,最后一个总是数字等?