Проверьте, находится ли значение EXACT в строке - PHP

Я прочитал множество сообщений о том, как посмотреть, есть ли значение в строке. Очевидно мой запрос отличается, так как несколько битов кода не сработали на 100%.

Я ищу строку и должен убедиться, что значение EXACT там - с идеальным соответствием.

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

Это не должно соответствовать тому, что мне нужно сделать. Мне нужно, чтобы это точно соответствовало. Весь код, который я тестировал, говорит, что это совпадение - и я понимаю, почему. Но что я могу сделать, чтобы он не соответствовал, так как Дождь отличается от Легкого Дождя или Сильного Дождя? Надеюсь, у меня есть смысл.

Я уже пробовал strpos и preg_match, но опять же, они равны совпадению - но для моих целей не равное совпадение.

Спасибо за то, что, вероятно, в конечном итоге будет DUH момент.

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

Попробуй это:

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

Кредиты для: /questions/35672588/kak-proverit-soderzhit-li-stroka-opredelennoe-slovo/35672622#35672622

Другие вопросы по тегам