我的要求是重定向我的一些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:获取特定字符之后的所有内容