Написала небольшой скрипт который должен находить в тексте (...) и после выводить сообщение о том есть ли оно в тексте или нет. Вариант вывода через isset не прокатил. Просьба обьяснить почему??? Вот так код работает: Код (Text): <? for ($i=0;$i<=$cmn;$i++) { $full_description = $news[$i]['text_'.$s_lang]; $space_pos = strpos($full_description, '(...)', 1); if($space_pos==null) { echo "korotko"; } else { echo "dlinno"; echo $space_pos; } } ?> А вот так нет. Но ведь это в прниципе одно и тоже? Код (Text): <? for ($i=0;$i<=$cmn;$i++) { $full_description = $news[$i]['text_'.$s_lang]; $space_pos = strpos($full_description, '(...)', 1); if(isset($space_pos)) { echo "korotko"; } else { echo "dlinno"; echo $space_pos; } } ?>
ТОгда совершенно логичен вопрос. А почему у меня работает первый вариант, причем абсолютно корректно..
Он работает корректно в большинстве случаев.. кроме как минимум, одного. Если тебе встретится (...) сразу же.
Как ни странно, но в этом случае он тоже отлично работает... Работает верно...Можете сами проверить, если не верите... В том числе и когда встречается (...)
koopakaru Используйте isset только для проверки существования переменной (собственно по назначению) и проблем не будет. В случае strpos сравнивайте с === false, как это заявлено в мануале.
У тебя стоит offset = 1. Поэтому работает. Убери оффсет и задай текст, в котором искать PHP: $full_description = '(...)blahblahblah'; Увидишь, что если у тебя будет условие PHP: if($space_pos==null) (хотя правильно не null, а false) - то он всё равно тебе скажет, как-будто он не нашёл подстроку.. Хотя на самом деле он нашёл, просто позиция = 0, а это равнозначно == false. Поэтому нужно писать === false. Тогда не будет путанницы.