Проверьте, содержит ли строка определенное число

У меня есть строка

8,7,13,14,16 

Самый простой способ определить, присутствует ли данное число в этой строке?

 $numberA = "13"; $string = "8,7,13,14,16"; if($string magic $numberA){ $result = "Yeah, that number is in there"; } else { $result = "Sorry."; } 

Ищет магию.

 <?php in_array('13', explode(',', '8,7,13,14,16')); ?> 

… вернет, находится ли строка 13 в строке.

Просто для того, чтобы уточнить: explode превращает строку в массив, разбивая ее на каждом «,» в этом случае. Затем in_array проверяет, находится ли строка «13» в результирующем массиве.

Другим способом, который может быть более эффективным для laaaaaaaarge строк, является использование регулярного выражения:

 $numberA = "13"; $string = "8,7,13,14,16"; if(preg_match('/(^|,)'.$numberA.'($|,)/', $string)){ $result = "Yeah, that number is in there"; } else { $result = "Sorry."; } 
 if (strpos(','.$string.',' , ','.$numberA.',') !== FALSE) { //found } 

Предупреждение охранника "," символы ", они помогут справиться с" 13 "магией 1, 2, 133 '.

Удостоверьтесь, что вы сопоставляете полный номер в строке, а не только ее часть.

 function numberInList($num, $list) { return preg_match("/\b$num\b/", $list); } $string = "8,7,13,14,16"; numberInList(13, $string); # returns 1 numberInList(8, $string); # returns 1 numberInList(1, $string); # returns 0 numberInList(3, $string); # returns 0 

Простой поиск строк должен выполняться, если вы просто проверяете наличие строки. Я не говорю на php, но я думаю, что так оно и есть.

 $mystring = '8,7,13,14,16'; $findme = '13'; if (preg_match('/(?>(^|[^0-9])'.$findme.'([^0-9]|$))/', $mystring)) { $result = "Yeah, that number is in there"; } else { $result = "Sorry."; }