Нужно из строки где будут записываться числа (1 2 573 99 33..) по запросу определить есть ли запрашиваемое число в этой строке. к примеру нужно проверить есть ли в этой строке число 33
Есть такая функция в пхп, непомню сходу какая именно)) Я её юзал для айпишников. Она строку разбивает на массив по заданному сепоратору. Например по точке, наверное можно будет и по пробелу.. Потом уже будт легко по массиву бегать..
Вспомнил)) $массив = explode("сепоратор",$строка);
Почитай описание этой фукнции, возможно подойдёт.
А можно регуляркой:
<?php
$string = "1 2 573 99 33";
$search = 33;
if (preg_match("/\b".$search."\b/", $string))
echo "Искомое число ".$search." <i>присутствует</i> в строке ".$string;
else
echo "<i>Нету</i> в строке ".$string." числа ".$search." ";
?>
Ну да, чет я ступил. Мне в голову засело, что \b – это граница строки, а не слова. Постоянно меня это подводит
#7 – Ваш вариант самый полезный, люблю таких людей))
Или же, если доподлинно известно, что цифры разделяются пробелами и только пробелами,
(strpos(" 33 ", " " . $str . " ") !== false)
Не будем забывать, что strpos работает до 7 раз быстрее, чем preg_match.
Есть такая функция в пхп, непомню сходу какая именно)) Я её юзал для айпишников. Она строку разбивает на массив по заданному сепоратору. Например по точке, наверное можно будет и по пробелу.. Потом уже будт легко по массиву бегать..
Вспомнил)) $массив = explode("сепоратор",$строка);
Почитай описание этой фукнции, возможно подойдёт.
Ну или RegExы использовать
preg_match (" 33 ","1 2 573 99 33");
Возвращает число, 1 или 0.
А можно регуляркой:
";
<?php
$string = "1 2 573 99 33";
$search = 33;
if (preg_match("/\b".$search."\b/", $string))
echo "Искомое число ".$search." <i>присутствует</i> в строке ".$string;
else
echo "<i>Нету</i> в строке ".$string." числа ".$search."
?>
#3
опередил
Кстати, ваш вариант не сработает, т.к. строка заканчивается не на пробел.
strpos надо использовать )
#3 – в начале/конце строки будет бажить
#4 – верный вариант
#6 – бред
обьясните пожалуйста почему бред
№8
потому что помимо
1 2 33 3
может быть
1 3233 2
во втором варианте числа 33 нет, но strpos его найдет
Ну да, чет я ступил. Мне в голову засело, что \b – это граница строки, а не слова. Постоянно меня это подводит
#7 – Ваш вариант самый полезный, люблю таких людей))
preg_match(~(^|\s)+33(\s|$)+~, $str);
Или же, если доподлинно известно, что цифры разделяются пробелами и только пробелами,
(strpos(" 33 ", " " . $str . " ") !== false)
Не будем забывать, что strpos работает до 7 раз быстрее, чем preg_match.
#11
Забыл про варианты когда нужное число будет в начале или конце строки. А так да, вариант с strpos будет максимально производителен.
#11
тока аргументы в другом порядке) сначала где, потом что ищем…
(strpos(" $str ", " 33 ")!==false)
#12:
Специально для этого дописываем по одному пробелу в начале и в конце
#13:
Ч-черт.. Да, ты прав.