Искать элементы массива в строке

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Есть массив с каким-то количеством элементов, которое будет меняться время от времени.
Есть строка, содержание которой меняется при каждом запросе. Нужно каждый элемент массива искать в этой строке и если элемент не найден, выполнять условие.
В строке может встретиться только один элемент из всех и только один раз.

Подскажите, как лучше всего это сделать?
 
Последнее редактирование:
Есть массив с каким-то количеством элементов, которое будет меняться время от времени.
Есть строка, содержание которой меняется при каждом запросе. Нужно каждый элемент массива искать в этой строке и если элемент не найден, выполнять условие.
В строке может встретиться только один элемент из всех и только один раз.

Подскажите, как лучше всего это сделать?

PHP:
php > $arr = ['x','y','z'];
php > $str = 'blabla x bla z';
php > foreach ($arr as $el) if (strpos($str, $el)===false) echo $el . " is not found\n";
y is not found
 
PHP:
php > $arr = ['x','y','z'];
php > $str = 'blabla x bla z';
php > foreach ($arr as $el) if (strpos($str, $el)===false) echo $el . " is not found\n";
y is not found
Эта конструкция выводит 1, хотя элемент в строке есть. Что я не так делаю?
PHP:
$arr = array('bla bla bla','ololo');

$str = " blo\1234| (qwerty/blo ololo)";

foreach ($arr as $el) {
 
     if (strpos($str, $el) === false) exit('1');
}
 
Последнее редактирование:
Эта конструкция выводит 1, хотя элемент в массиве есть. Что я не так делаю?
PHP:
$arr = array('bla bla bla','ololo');

$str = " blo\1234| (qwerty/blo ololo)";

foreach ($arr as $el) {
 
     if (strpos($str, $el) === false) exit('1');
}
Все правильно. Ты ж сам писал что тебе надо что-то делать с элементом, которого нет. Я тебе условие и написал на элемент которого нет. У тебя запускается перебор arr, первый элемент bla bla bla, его нет в твоей строке, срабатывает скрипт "закончить работу и выдать 1". Как ты и написал.
 
Все правильно. Ты ж сам писал что тебе надо что-то делать с элементом, которого нет. Я тебе условие и написал на элемент которого нет. У тебя запускается перебор arr, первый элемент bla bla bla, его нет в твоей строке, срабатывает скрипт "закончить работу и выдать 1". Как ты и написал.
Не, мне нужно перебрать все элементы, и когда встретится хоть один, то остановить перебор и выполнить условие. А если не найден ни один, то ничего не делать.
 
Не, мне нужно перебрать все элементы, и когда встретится хоть один, то остановить перебор и выполнить условие. А если не найден ни один, то ничего не делать.
Ну так а написал то ты не так. Добавь то что надо выполнить до exit(1);

if (...) {
тут то что надо выполнить
exit(1);
}
 
Ну так а написал то ты не так. Добавь то что надо выполнить до exit(1);

if (...) {
тут то что надо выполнить
exit(1);
}
Я так делал, но всё равно единица выводится, как-будто ololo нет в $str, а оно там есть. Вот в чём затык.
PHP:
$arr = array('bla bla bla','ololo');

$str = " blo\1234| (qwerty/blo ololo)";

foreach ($arr as $el) {
     if (strpos($str, $el) === false) echo '1'; exit();
}
 
Да блин...
мне нужно перебрать все элементы
Я и в начале так же писал :)
Нужно каждый элемент массива искать в этой строке

А вот потом видимо я не так объяснил. Сам уже запутался. :confused:
В общем требуется проверить наличие в строке каждого элемента. И выполнить условие только если в строке нет ни одного из них. А если хотя бы один есть, то оставить перебор и ничего не делать.
Сейчас вроде правильно всё написал.
С меня на пиво за помощь :D
 
Ну это совсем другое условие. Только какой смысл перебирать каждый элемент в отдельности? Достаточно найти хот

PHP:
php > $arr = array('bla bla bla','ololo');
php > $str = " blo\1234| (qwerty/blo ololo)";
php > if ($str === str_replace($arr, '', $str)) echo 'No one element found';

Если у тебя там есть русские слова и все в UTF-8 - то лучше использовать mb_str_replace
 
Назад
Сверху