Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: strpos(...) >= 0 в чем ошибка?
 
 автор: f111   (14.09.2011 в 15:22)   письмо автору
 
 

В теме: "STRPOS не находит первый символ"
http://softtime.ru/forum/read.php?id_forum=1&id_theme=82430
мои примеры были удалены модератором.
Логично было бы предположить что они не верны, но в чём?

Объясните пожалуйста ошибку в моё примере:
<?php
if (strpos('Автомобили и мотоциклы/Автобусы/Автобусы''Автомобили')>=0) echo 'Yes';
?>


в справочнике http://www.php.su/functions/?strpos написано:
Описание
int strpos ( string haystack, string needle [, int offset] )

Внимание
Эта функция может возвращать как логическое значение FALSE, так и не относящееся к логическому типу значение, 
которое приводится к FALSE, например, 0 или "". За более подробной информации обратитесь к разделу Булев тип. 
Используйте оператор === для проверки значения, возвращаемого этой функцией.


и я так понимаю, если функция в качестве своего положительного ответа выдаёт целое число от 0 "и более", то моя проверка верна.

к тому же на странице основного справочника:
http://www.php.net/manual/en/function.strpos.php
есть примеры которые я так понимаю верны, иначе бы не были размещены, или я неправ?

"jamie at jamiechong dot ca 19-Jan-2007 08:15"
используется условние "if ($offset>=0)"

"info at quantummechanic dot com 06-Oct-2005 12:42"
"if ($pzn>-1)"

"Suggested re-write for pink WARNING box 11-Jan-2008 11:45"
"> -1 (note: or greater than any negative number)"

решил перепроверить полученный результат, вдруг моя проверка не верно реагирует:
<?php
echo strpos('Автомобили и мотоциклы/Автобусы/Автобусы''Автомобили')."\n";
if (
strpos('Автомобили и мотоциклы/Автобусы/Автобусы''Автомобили')>=0) echo "1\n";
if (
strpos('Автомобили и мотоциклы/Автобусы/Автобусы''Автомобили')!==false) echo "2\n";
if (
strpos('Автомобили и мотоциклы/Автобусы/Автобусы''Автомобили')>-1) echo "3\n";
?>


вывод:
0
1
2
3

все три условия подтвердили что совпадение обнаружено, так почему же не подошло ">=0" ?

  Ответить  
 
 автор: cheops   (14.09.2011 в 15:30)   письмо автору
 
   для: f111   (14.09.2011 в 15:22)
 

false в операциях сравнения с числами приводится к 0, ваша первая проверка всегда будет давать true, не зависимо от того, есть в строке такая подстрока или нет.

  Ответить  
 
 автор: f111   (14.09.2011 в 15:33)   письмо автору
 
   для: cheops   (14.09.2011 в 15:30)
 

хааа, вот теперь действительно ясна ошибка, спасибо cheops

раньше встречал условие >-1, и казалось что избавившись от "отрицательного знака", условие не нарушится.
теперь ясно где валялись грабли, ... намотаю на ус))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования