PHP正则表达式+通配符中的多个值

时间:2015-08-08 11:06:01

标签: php regex

我只想强调,在我提出这个问题之前,我一直在阅读,尝试和失败。我可以看到类似的问题但不完全相同。

我需要找到一个值:

  • 无论如何都可以。
  • 能否或不能以完全随机的方式结束。 “蛋糕好吃”
  • 可以包含在/ slashes /
  • 中,也可以不包含在内

这就是我目前正在做的事情:

  if ( $name == '/cake/' || $name == '/CAKE/' || $name == '/Cake/' || $name == '/CaKe/' || $name == 'CAKE' || $name == 'cake' { 

这就是我要做的事情:

if(preg_match == (cake:) *(\([a-zA-Z]+\).+){

无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

您基本上是在搜索不区分大小写的Cake。然后只需使用i flag

  preg_match("~ Cake ~xi", $name)
                       ↑

如果你还想匹配可选的/斜杠,那么添加一个altenative:

  preg_match("~ /Cake/  |  \b Cake \b ~xi", $name)
                ↑    ↑      ↑       ↑

请注意未封闭蛋糕的\b字边界标记,因此您不能匹配Cakeriky

  1. 如果您希望Cake位于字符串的开头,则需要^ marker

     preg_match("~ ^  (/Cake/  |  \b Cake \b) ~xi", $name)
                   ↑
              start anchor
    
  2. 如果您还想强制执行以后出现的某些文本(而不是可选/忽略),则添加另一个占位符:

     preg_match("~ ^  (/Cake/  |  \b Cake \b)   .*\w.* ~xi", $name)
                                                   ↑
                                          at least one word char