Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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 重定向以specialcharacter和number结尾的Url模式_Php_Regex_Preg Match - Fatal编程技术网

Php 重定向以specialcharacter和number结尾的Url模式

Php 重定向以specialcharacter和number结尾的Url模式,php,regex,preg-match,Php,Regex,Preg Match,我的要求是重定向我的一些网址,其中包含一个8位数字和一个特殊字符的结尾 下面给出了示例URL www.example.com/anything-here/hello-12345677 www.example.com/anything-here/reach-here/reach-hello-12543598 www.example.com/anything-here/hello-12345677 我在php中使用pregmatch查找包含“-”和8位数字的模式 我尝试了下面的代码,但它对我不起作用

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

下面给出了示例URL

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

www.example.com/anything-here/reach-here/reach-hello-12543598

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

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

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

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

下面的模式将匹配任何带有破折号的URL,破折号后面后跟8位数字。结尾带有特殊字符的URL将不匹配

$result = preg_match("/.*-\d{8}$/i", request_uri());
此处演示:


以下模式将匹配任何带有破折号的URL,破折号后面跟着8位数字。结尾带有特殊字符的URL将不匹配

$result = preg_match("/.*-\d{8}$/i", request_uri());
此处演示:

$result=substr(请求uri(),strpos(请求uri(),“-”)+1)

来源:

$result=substr(请求uri(),strpos(请求uri(),“-”)+1)


来源:

您使用的正则表达式的问题在于,您将破折号的模式和八位数字直接放在正斜杠之后,在您展示的所有示例中,斜杠和破折号之间还有其他字符

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

/*****您使用的正则表达式的问题是,您将破折号的模式和八位数字直接放在正斜杠之后,在您展示的所有示例中,斜杠和破折号之间还有其他字符

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

//****什么是特殊字符?我只看到数字。HI Chris“-”是后跟8位数字的特殊字符。例如:“-12345678”哦,可能需要改写
和结尾的特殊字符。您的任何URL中都没有
/-
。这就是为什么你找不到火柴。例如,
-\d{8}$
将满足
-
的要求,然后在字符串的末尾添加8个数字。因此,我只需要-\d{8}对吗?从另一个角度看,
-
就是
-
并且字符串中的某个地方有8个数字。您也不希望
$result
有匹配的文本,对吗?特殊字符是什么?我只看到数字。HI Chris“-”是后跟8位数字的特殊字符。例如:“-12345678”哦,可能需要改写
和结尾的特殊字符。您的任何URL中都没有
/-
。这就是为什么你找不到火柴。例如,
-\d{8}$
将满足
-
的要求,然后在字符串的末尾添加8个数字。因此,我只需要-\d{8}对吗?从另一个角度看,
-
就是
-
并且字符串中的某个地方有8个数字。您也不希望
$result
有匹配的文本,对吗?
*
i
实际上是不需要的。@Vishnu您想在结尾匹配什么特殊字符?实际上url以“-”和8位数字结尾。但是任何东西都可以在“-”和8位数之前。就像任何东西一样——12345678,任何东西——12345678,任何东西——12345678。我使用的是php 5.6,你确定我的模式不符合这个要求吗?实际上不需要
*
I
。@Vishnu你想在结尾匹配什么特殊字符?实际上url以“-”和8位数字结尾。但是任何东西都可以在“-”和8位数之前。就像任何东西一样——12345678,任何东西——12345678,任何东西——12345678。我使用的是php 5.6您确定我的模式不符合此要求吗?检查此链接:。检查此链接:。