我正在尝试使用preg_match在我的数组中搜索部分字符串。我已经让它工作得很好了,但是我的数组中的一些字符串中有一些破折号( - )并且结果不会像它们应该的那样回复。我不太熟悉正则表达式以了解原因。
这是我的preg_match:
if(preg_match("/\b$game\b/i", $value['name']))
{
var_dump($value['name']);
}
如果我搜索“我的狗”,它会以“我的”和“狗”字样给我所有结果。但是任何有“我 - 狗”的结果,它都不会归还它们。如果输入“mydog”,我是否也可以显示结果?
感谢。
答案 0 :(得分:0)
在检查匹配项之前,我会在标准化测试字符串和正则表达式字符串中添加一个函数。
function standardize($word){
$word = strtolower($word);
$word = str_replace("-", "", $word);
$word = str_replace(" ", "", $word);
return $word;
}
$game = standardize($game);
if(preg_match("/\b$game\b/i", standardize($value['name'])))
{
var_dump($value['name']);
}
答案 1 :(得分:0)
这个正则表达式模式怎么样:
/my[- ]{0,1}dog/i
这会搜索我的'然后 - 或空的空间,零或一次然后狗。最后的i表示不区分大小写匹配。