Проверьте, находится ли значение 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