使用短划线搜索字符串内的子字符串

时间:2017-01-30 14:03:37

标签: php arrays regex

我正在尝试使用preg_match在我的数组中搜索部分字符串。我已经让它工作得很好了,但是我的数组中的一些字符串中有一些破折号( - )并且结果不会像它们应该的那样回复。我不太熟悉正则表达式以了解原因。

这是我的preg_match:

if(preg_match("/\b$game\b/i", $value['name']))
{
    var_dump($value['name']);
}

如果我搜索“我的狗”,它会以“我的”和“狗”字样给我所有结果。但是任何有“我 - 狗”的结果,它都不会归还它们。如果输入“mydog”,我是否也可以显示结果?

感谢。

2 个答案:

答案 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表示不区分大小写匹配。