我已经阅读了很多关于如何查看值是否在字符串中的帖子。显然我的请求是不同的,因为多位代码没有100%工作。
我正在搜索字符串,需要确保EXACT值在那里 - 完美匹配。
$list="Light Rain,Heavy Rain";
$find="Rain";
这不应该与我需要做的事情相匹配。我需要它完全匹配。 我测试过的所有代码都说是匹配 - 我理解为什么。但是,由于Rain与Light Rain或Heavy Rain不同,我能做些什么来使它不匹配?我希望我有意义。
我已经尝试过strpos和preg_match,但同样,那些相同的匹配 - 但是出于我的目的,不是一个相等的匹配。
感谢可能最终成为DUH时刻的事情。
答案 0 :(得分:2)
如果您需要完全匹配,$list
始终以逗号分隔。为什么不这样检查呢?
$list = explode(',', "Light Rain,Heavy Rain");
var_dump(in_array('Rain', $list)); // false
var_dump(in_array('Heavy Rain', $list)); // true
如果你必须有正则表达式。
在你的正则表达式中,确保你在开始时检查字符串的开头或逗号(^|,)
,然后检查你的字符串,然后是另一个逗号或字符串(,|$)
的结尾。 ?:
使它们成为非捕获组,因此它们不会显示在$matches
中。
$list = "Light Rain,Heavy Rain";
$test = 'Rain';
preg_match("/(?:^|,)($test)(?:,|$)/", $list, $matches);
var_dump(!empty($matches)); // false
$test = 'Heavy Rain';
preg_match("/(?:^|,)($test)(?:,|$)/", $list, $matches);
var_dump(!empty($matches)); // true
答案 1 :(得分:1)
试试这个:
$list="Light Rain,Heavy Rain";
$find="Light";
if(strpos($list,$find) !== false)
{
echo 'true';
}
else
{
echo 'false';
}