重定向以特殊字符和数字结尾的Url模式


Redirect the Url pattern ending with specialcharacter and number

我的要求是重定向我的一些url,其中包含一个8位数的数字和结尾的一个特殊字符。

示例URL在下面给出

www.example.com/anything-here/helo-12345677

www.example.com/anything-here/again-here/gain-helo-12543598

www.example.com/anything-here/helo-12345677

我在php中使用pregmatch来查找包含"-"和8位数字的模式。

我尝试了下面的代码,但它对我不起作用。我的模式正确吗?

$result = preg_match("#.*/-'d{8}$#i", request_uri());

下面的模式将匹配任何末尾带有8位数字的短划线的URL。末尾带有特殊字符的URL将不匹配。

$result = preg_match("/.*-'d{8}$/i", request_uri());

此处演示:

Regex101

您使用的正则表达式的问题是,您将短划线和八位数字的模式直接放在正斜杠之后,在您显示的所有示例中,斜杠和短划线之间都有其他字符。

//                                    ***** <---These chars don't match your pattern
$url = "www.example.com/anything-here/hello-12345677";
//                    .*             /     -'d{8}  $

如果您想确保url中-'d{8}之前有一个斜杠,可以在它之前添加另一个通配符(.*/.*-'d{8}$),或者如果这无关紧要,则不需要斜杠和通配符。(-'d{8}$)。

$result=substr(request_uri(),strpos(request_uri(),"-")+1);

source:获取特定字符之后的所有内容