我想完全匹配联系我们页面但不工作

时间:2016-12-01 07:33:00

标签: php preg-match

我想匹配contact-us

中确切存在的url页面

组合可能是..

contact.*        i,e(extension could be .html or .php or .aspx)
contact-us.*     i,e(extension could be .html or .php or .aspx)
contact.*        i,e(extension could be .html or .php or .aspx)
contactUs.*      i,e(extension could be .html or .php or .aspx)

没有扩展名

contact        i,e(no extension)
contact-us    i,e(no extension)
contact       i,e(no extension)
contactUs     i,e(no extension)

现在我正在使用匹配所有内容的代码

$page = "http://www.example.com/contact-usmsdnds";
if(preg_match('/contact|contact-us|contact-us(.php|html)|contact(.php|html)/siU',$page)){
    echo "Matched";
 }else{
   echo "No Match";
}

这是一个演示http://phpio.net/s/1i2p

我准备接受完全不同代码的解决方案

请提前帮助我!!

1 个答案:

答案 0 :(得分:0)

您可以使用

'~/contact(?-i:-us|Us)?(?:\.(?:aspx|php|html))?/?$~i'

请参阅regex demo

匹配:

  • /contact - 子字符串/contact
  • (?:-us|Us)? - 可选子字符串-usUs
  • (?:\.(?:aspx|php|html))? - . +任意替代字符串的可选序列()
  • /? - 可选的/
  • $ - 字符串结束。

请注意,(?-i:...)是一个修饰符组,其中备选方案以不区分大小写的方式匹配(末尾的常规/i修饰符不会影响此组)。