检查确切值是否在字符串中 - PHP

Check to see if EXACT value is in a string - PHP

我阅读了很多关于如何查看一个值是否在字符串中的文章。显然我的要求不同,因为多位代码还没有 100% 有效。

我正在搜索一个字符串,需要确保其中包含准确的值 - 完全匹配。

$list="Light Rain,Heavy Rain";
$find="Rain";

这不符合我需要做的事情。我需要它完全匹配。 我测试过的所有代码都说它是匹配的——我明白为什么。但是,由于 Rain 与 Light Rain 或 Heavy Rain 不同,我该怎么做才能使其不匹配?我希望我说得有道理。

我已经尝试过 strpos 和 preg_match,但同样,它们等于匹配 - 但就我而言,不是相等匹配。

感谢您提供的东西可能最终会成为一个 DUH 时刻。

试试这个:

$list="Light Rain,Heavy Rain";
$find="Light";
if(strpos($list,$find) !== false) 
{
    echo 'true';
}
else
{
    echo 'false';
}

感谢:

如果您需要完全匹配并且 $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