[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не корректно работае strpos
dima4321
Получаю массив. Нужна проверить вхождение в строку определенного слова.

Проверяю индексы ( $key) т.к. они являются словами.


Если слово входит, то тогда не выводить его.

Пользуюсь strpos.




foreach($n as $key=>$value) 
{
if(strlen($key)>=3
and $value>=4
and !strpos(strtolower($name),strtolower($key))
and !strpos(strtolower($words),strtolower($key)))
{
echo $key;
}
}





В результате например :

если $name=Black Sabbath и $key=Black ---- то слово Black выведется ...не понимаю почему. Он же с нулевой позиции ищет !! ???


Помогите пожалуйста.

Та же проблема была с

$words=' that, there, were, this, when, they, they, some, have, their, some, just, very, said, more, made
';
если $key=that-----
Выводил слово that ,хотя не должен. Помог отступ в начале строки.



Ваши мысли ??))



Спустя 10 минут, 52 секунды (14.03.2011 - 13:15) Лена написал(а):
foreach($n as $key=>$value) 
{
if(strlen($key)>=3
and strlen($value)>=4
and strpos(strtolower($name),strtolower($key))!==false
and
strpos(strtolower($words),strtolower($key)) !==false)
{
echo $key;
}
}



Если не выходит, покажите, что у вас в массиве $n.
Кодировка скрипта какая?

Спустя 26 минут, 37 секунд (14.03.2011 - 13:42) dima4321 написал(а):
Идея твоя правильная...))

вот так работает

foreach($n as $key=>$value)
{
if(strlen($key)>=3
and $value>=4
and !strpos(strtolower($words),strtolower($key)))
{
$pos=strpos(strtolower($name),strtolower($key));
if(($pos === false))
{
echo ucfirst(strtolower($name))." ".$key.', ';
}
}
}

Твой пример не выводит ничего ))

но вот так ===false ---он работает корректно.

foreach($n as $key=>$value)
{
if(strlen($key)>=4
and $value>=4
and strpos(strtolower($name),strtolower($key))===false
and
strpos(strtolower($words),strtolower($key))===false)
{
echo ucfirst(strtolower($name))." ".$key.', ';
}
}




Спустя 25 секунд (14.03.2011 - 13:42) Trianon написал(а):
dima4321
Потому что Вы не отличаете false и 0 , которые возвращает strpos.
0 - означает "найдено с нулевой позиции строки"
false - означает - не найдено.
Поэтому костыль в виде отступа и спас.

Кстати о отступах.
Неплохо было бы ствить отступы в коде.
Читать же невозможно.

Спустя 21 минута, 7 секунд (14.03.2011 - 14:03) Лена написал(а):
Цитата (dima4321 @ 14.03.2011 - 10:42)
Твой пример не выводит ничего ))

но вот так ===false ---он работает корректно.


В первом посте вы неправильно объяснили, что вам нужно было, поэтому и запутали меня.

"Если слово не найдено - выводим его." - таким должно было быть ваше условие.


Спустя 50 минут, 45 секунд (14.03.2011 - 14:54) dima4321 написал(а):
Trianon


Да мой капитан ))

Тема усвоена !!


Отсутпы в будущем планириуются ).


_____________
Работаю за еду ! __))
И за плюсики !
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.