我只想强调,在我提出这个问题之前,我一直在阅读,尝试和失败。我可以看到类似的问题但不完全相同。
我需要找到一个值:
这就是我目前正在做的事情:
if ( $name == '/cake/' || $name == '/CAKE/' || $name == '/Cake/' || $name == '/CaKe/' || $name == 'CAKE' || $name == 'cake' {
这就是我要做的事情:
if(preg_match == (cake:) *(\([a-zA-Z]+\).+){
无法让它发挥作用。
答案 0 :(得分:1)
您基本上是在搜索不区分大小写的Cake
。然后只需使用i
flag。
preg_match("~ Cake ~xi", $name)
↑
如果你还想匹配可选的/
斜杠,那么添加一个altenative:
preg_match("~ /Cake/ | \b Cake \b ~xi", $name)
↑ ↑ ↑ ↑
请注意未封闭蛋糕的\b
字边界标记,因此您不能匹配Cakeriky
。
如果您希望Cake
位于字符串的开头,则需要^
marker。
preg_match("~ ^ (/Cake/ | \b Cake \b) ~xi", $name)
↑
start anchor
如果您还想强制执行以后出现的某些文本(而不是可选/忽略),则添加另一个占位符:
preg_match("~ ^ (/Cake/ | \b Cake \b) .*\w.* ~xi", $name)
↑
at least one word char