当你有一个特定的字符串你正在寻找,使用正则表达式在一点矫枉过正。你会很好的使用PHP的标准字符串搜索功能之一。 (传统,迷信,the manual)表示,使用strpos函数将产生更好的性能。但是,传统的PHP智慧(阅读:神话,传奇,迷信,the manual)说,使用strpos函数将产生更好的性能。即,像
if(strpos($string, '_archived') !== false) {
}
你要在这里使用真正的不平等运算符,如strpos返回“0”时,它在它的草垛开始找到针。有关详细信息,请参阅the manual。对于你的问题,PHP的正则表达式引擎期望你用一组分隔符(它可以是多个不同的字符之一)(“/”或“|”或“(”或“{”或“#”,或...)。PHP引擎认为你想的
.*
与固定的模式修饰符是
_archived$
左右的正则表达式,在未来,当您使用正则表达式时,请尝试类似
//equivilant
preg_match('/(.*)_archived$/i',$string);
preg_match('{(.*)_archived$}i',$string);
preg_match('#(.*)_archived$#i',$string);
“/”,“#”和“{}”字符是您的分隔符。他们没有用在比赛中,他们习惯于告诉引擎“这些角色之间的任何东西都是我的注册表头,最后的”我“是一个模式修饰符,它被认为是不区分大小写的,没有必要,但我在这里包含它,所以你可以看到一个模式修饰符看起来像什么,并帮助你理解为什么你需要首先分隔符。