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

Форум PHP

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

 

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

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

тема: STRPOS не находит первый символ
 
 автор: dump   (02.09.2011 в 16:12)   письмо автору
 
 

Есть такая конструкция:
if (strpos(' Автомобили и мотоциклы/Автобусы/Автобусы', 'Автомобили')) echo 'Yes';
Она не выводит Yes, хотя должна.
А если написать:
if (strpos(' Автомобили и мотоциклы/Автобусы/Автобусы', 'Автомобили')) echo 'Yes';
то, всё выводиться как надо. Т.е первый символ не учавствует в поиске. Почему?

  Ответить  
 
 автор: Саня   (02.09.2011 в 16:23)   письмо автору
 
   для: dump   (02.09.2011 в 16:12)
 

strpos() всё правильно находит. Тут дело в приведении типов. strpos() возвращает false, если подстрока не найдена или число — индекс символа, с которого начинается найденная подстрока.

В первом случае strpos() вернула число 0 (с позиции этого символа начинается искомая подстрока). Конструкция if понимает только булевые значения, поэтому ноль (так же как и пустая строка, null, пустой массив) прозрачно преобразуется в false. Во втором случае strpos() возвращает 1, что преобразуется в true.

Более того, об этом написано в документации на большой красной плашке.

  Ответить  
 
 автор: f111   (02.09.2011 в 19:48)   письмо автору
 
   для: dump   (02.09.2011 в 16:12)
 

если strpos не обязателен, то может substr_count подойдёт, если цель просто проверить вхождение.

  Ответить  
 
 автор: f111   (02.09.2011 в 19:48)   письмо автору
 
   для: dump   (02.09.2011 в 16:12)
 

.

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

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