Не срабатывает strpos

185
08 февраля 2019, 10:30

Имеется строка:

Ссылка на описание и полную версию 

Нужно проверить переменную на наличие такой строки.

$find = "Ссылка на описание и полную версию";
    if(strpos($productArr[$i]["description"],$find)){
        $description = "";
    }
    else{
    $description = $productArr[$i]["description"];
}

Вот вся строка, которую я получаю:

Ссылка на описание и полную версию :https://crispy.com.ua/ottie/first-swing-recovery-essence-ottie

Не могу понять почему не находит вхождение этой подстроки

Answer 1

Не могу понять почему не находит вхождение этой подстроки

Вероятно потому, что strpos() возвращает позицию первого вхождения строки. Если это 0, то в скобках оператора if () он будет преобразован в false, и выполнится блок кода else. Используйте оператор === для проверки значения, возвращаемого этой функцией:

$i = 0;
$productArr[0]["description"] = "Ссылка на описание и полную версию :https://crispy.com.ua/ottie/first-swing-recovery-essence-ottie";
$find = "Ссылка на описание и полную версию";
if (strpos($productArr[$i]["description"], $find) !== false) {
    $description = $productArr[$i]["description"];
} else {
    $description = "";
}
echo $description;

Для работы с многобайтовыми кодировками используйте mb_strpos().

READ ALSO
curl и перемещение по сайту

curl и перемещение по сайту

Столкнулся с проблемой: нужно посредством curl перемещаться после авторизации на сайте по внутренним страницам админки, авторизуюсь - записываю...

177
Время работы функции в STL

Время работы функции в STL

Какое асимптотическое время работы функции qsize() очереди приоритетов?

158
ошибка передачи вектора в функцию C++

ошибка передачи вектора в функцию C++

При написании многопоточного приложения на c++ возникла необходимость передачи в функцию, которая выполняется в многопоточном режиме (multy),...

194
Как заполнить QPainterPath

Как заполнить QPainterPath

Не понимаю как использовать void QPainterPath::setFillRule(Qt::FillRule fillRule)

177