Intereting Posts
Как обновить меню «Выбрать» с помощью AJAX без <div> внутри формы Как хранить изображения в базе данных mysql с помощью php Получить заголовки http из текущего запроса в PHP Получение сведений о местоположении из IP в PHP как мне получить доступ к объекту, который я отправил в файл сервера Невозможно переместить композитор file_get_contents () с контекстом для использования http / 1.1 значительно медленных скоростей загрузки Есть ли способ сказать завиток, чтобы не использовать кеш генерировать массив из php while loop Есть ли функция в Django / Python, похожая на PHP flush (), которая позволяет мне отправлять часть ответа HTTP клиентам? Проверьте, пересекает ли диапазон другой диапазон чисел PHP-скрипт возвращает значение null при вставке <a> в базу данных PHP и Codeigniter. Как вернуть объект массива, а не простой массив? setlocale (LC_ALL, 'en_GB.UTF8') не работает над окнами Иногда мой пароль зависает?

Проверьте, находится ли значение внутри строки, которая имеет значения, разделенные запятыми?

Есть ли простой способ проверить, находится ли значение внутри строки?

$string = ' 123,456,789,abc789,def' if ($string has '789') { // code } 

Я хочу только точное совпадение (так что только 789, а не abc789)

Единственный способ, которым я могу сейчас это сделать, – взорвать строку с помощью запятой, чтобы превратить ее в массив, а затем проверить каждое значение для соответствия. Есть ли лучший / более эффективный способ?

Использование strpos не будет работать, если, например, у вас есть ' 123,456,789,12789,abc,def' , вместо этого используйте preg_match :

 $string = ' 123,456,789,abc789,def'; $what_to_find = '789'; if (preg_match('/\b' . $what_to_find . '\b/', $string)) { // code } 

демонстрация

вы можете взорвать его и проверить, находится ли его в массиве

 function stringContains($string, $needle) { $arr = explode(',',$string); if(in_array($needle,$arr)) return true; return false; } 

кроме предложений stpos, это не вернет true, если вы ищете 12 в строке 123,456, где strpos вернет позицию

Вы можете использовать функцию strpos() . Он вернет FALSE если игла не найдена в строке поиска:

 if (strpos($string, '789') !== FALSE) { // code... } 

Демо!


Если вы хотите точное совпадение, я бы использовал explode() :

 $parts = explode(',', trim($string)); if (in_array('789', $parts)) { // code... } 

Демо!

Используйте функцию strpos() .

 $string = ' 123,456,789,abc,def' if (strpos($string,'789') !== FALSE) { // code } 

Вы можете использовать функцию strpos которая используется для поиска вхождения одной строки внутри другой

  $string = ' 123,456,789,abc,def'; if (strpos($string,'789') !== false) { echo 'true'; } 

См. Руководство

Более короткая версия кода @ Bryan:

 function stringContains($string, $needle) { return in_array($needle, explode(',', $string)); }