А у меня не срабатывает условие
$aaa = stripos($str, 'строка')
if ($aaa === false) {}
Если выводить $aaa то пустая строка, пробовал сравнивать с "" тоже не работает почему то. Строка реально не найдена.
Спустя 20 минут, 56 секунд (23.03.2014 - 16:16) mmsgold написал(а):
sofuwa, у меня тоже чет не работает,,, крутая функция,,, и не пойму почему обязательно использовать ===,,,,
Спустя 4 минуты, 27 секунд (23.03.2014 - 16:20) sofuwa написал(а):
Цитата (mmsgold @ 23.03.2014 - 13:16) |
sofuwa, у меня тоже чет не работает,,, крутая функция,,, и не пойму почему обязательно использовать ===,,,, |
я пробовал и == я как ток не пробовал.
Спустя 2 минуты, 50 секунд (23.03.2014 - 16:23) T1grOK написал(а):
Цитата (mmsgold @ 23.03.2014 - 13:16) |
и не пойму почему обязательно использовать === |
Так понятней?
$aaa = stripos('ABC', 'A');
if ($aaa == false) {
echo 'Не найдено';
}
Спустя 10 минут, 13 секунд (23.03.2014 - 16:33) mmsgold написал(а):
T1grOK, а в каком случае эта функция отправит труъ
<?php
$findme = 'aBC';
$mystring1 = 'xyz';
$mystring2 = 'aBC';
$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);
if ($pos2 == false) {
echo "нетeq совпадение!";
}
?>
в данном случае выводит эхо
<?php
$findme = 'aBC';
$mystring1 = 'xyz';
$mystring2 = 'aBC';
$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);
if ($pos2 == false) {
echo "нетeq совпадение!";
}
?>
в данном случае выводит эхо
Спустя 1 минута (23.03.2014 - 16:34) Игорь_Vasinsky написал(а):
Цитата |
$aaa = stripos('ABC', 'A'); if ($aaa == false) { echo 'Не найдено'; } |
из мануала
// Заметьте, что используется ===. Использование == не даст верного
// результата, так как 'a' в нулевой позиции.
if ($pos2 !== false) {
echo "Нашел '$findme' в '$mystring2' в позиции $pos2";
}
тип сравнивают с ===, а не с ==
спец. в описании этой функции есть абзац
Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
а у ТС, судя по сему , как и в пред. его топике - билиберда с кодировкой.
скорее всего у него юникод.
Спустя 6 минут, 24 секунды (23.03.2014 - 16:40) sofuwa написал(а):
-----------
Спустя 3 минуты, 16 секунд (23.03.2014 - 16:44) inpost написал(а):
sofuwa
Ответ же очевидный, в $str у тебя нет 'строка'.
Ответ же очевидный, в $str у тебя нет 'строка'.
Спустя 25 секунд (23.03.2014 - 16:44) Игорь_Vasinsky написал(а):
есть баг, о нём давно говорят и в том числе тут.
если сравнивать тип с false - глючит, нужно НЕ сравнивать с false, т.е.
если сравнивать тип с false - глючит, нужно НЕ сравнивать с false, т.е.
if ($pos2 !== false) {
echo "Нашел '$findme' в '$mystring2' в позиции $pos2";
}
Спустя 3 минуты, 17 секунд (23.03.2014 - 16:47) inpost написал(а):
Игорь_Vasinsky
Первый раз слышу о баге. И на php.net не читал.
Первый раз слышу о баге. И на php.net не читал.
Спустя 2 минуты, 2 секунды (23.03.2014 - 16:49) mmsgold написал(а):
// результата, так как 'a' в нулевой позиции.
что это значит? в нулевой позиции,,, масив типа... а причем здесь строгий логический тип ===....
все сложное можно объяснить простым языком... кто то там сказал
Спустя 2 минуты, 26 секунд (23.03.2014 - 16:52) Игорь_Vasinsky написал(а):
Цитата |
а причем здесь строгий логический тип ===.... |
Спустя 4 минуты, 7 секунд (23.03.2014 - 16:56) mmsgold написал(а):
Игорь_Vasinsky, пардон,,, чет я замудрил, тоесть все кроме 1 и true и "1"== true будет ложью,,, просто думал что раз есть символ значит уже не пусто и это в булеве логика (оказывается не так)
Спустя 2 минуты, 16 секунд (23.03.2014 - 16:58) Invis1ble написал(а):
Спустя 3 минуты, 1 секунда (23.03.2014 - 17:01) Игорь_Vasinsky написал(а):
mmsgold
фокус-покус
фокус-покус
var_dump((bool)"1");//true
var_dump((bool)"0");//false
Спустя 1 час, 33 минуты, 45 секунд (23.03.2014 - 18:35) mvg написал(а):
В слов "строка" каждый символ по 2 байта потому, как русский алфавит в ASCII кодах содержит 2 байта. Тут и unicode и windows-1251 не будет найдена так как символ хранится в 2х байтах и соответственно stripos работая с однобайтовыми символами его определить не может и поэтому в помощь может прийти mb_stripos которая среди параметров содержит кодировку и которая сможет 2х байтный символ перевести в однобайтный согласно таблици кодировки символов или обработать 2х байтный символ.
По поводу тождественного сравнения написано в мануал:
По поводу тождественного сравнения написано в мануал:
Цитата |
<?php |
и в добавок:
$a = false;
$b = 0;
if ($a == $b)
{
echo "TRUE";
if ($a === $b)
echo "EQUALE";
}
Результат TRUE.