У меня есть строка
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."; }