|
|
|
| Есть такая конструкция:
if (strpos(' Автомобили и мотоциклы/Автобусы/Автобусы', 'Автомобили')) echo 'Yes';
Она не выводит Yes, хотя должна.
А если написать:
if (strpos(' Автомобили и мотоциклы/Автобусы/Автобусы', 'Автомобили')) echo 'Yes';
то, всё выводиться как надо. Т.е первый символ не учавствует в поиске. Почему? | |
|
|
|
|
|
|
|
для: dump
(02.09.2011 в 16:12)
| | strpos() всё правильно находит. Тут дело в приведении типов. strpos() возвращает false, если подстрока не найдена или число — индекс символа, с которого начинается найденная подстрока.
В первом случае strpos() вернула число 0 (с позиции этого символа начинается искомая подстрока). Конструкция if понимает только булевые значения, поэтому ноль (так же как и пустая строка, null, пустой массив) прозрачно преобразуется в false. Во втором случае strpos() возвращает 1, что преобразуется в true.
Более того, об этом написано в документации на большой красной плашке. | |
|
|
|
|
|
|
|
для: dump
(02.09.2011 в 16:12)
| | если strpos не обязателен, то может substr_count подойдёт, если цель просто проверить вхождение. | |
|
|
|
|
|
|
|
для: dump
(02.09.2011 в 16:12)
| | . | |
|
|
|