Простая функция PHP strpos не работает, почему?

Почему этот автономный код не работает:

$link = 'https://google.com'; $unacceptables = array('https:','.doc','.pdf', '.jpg', '.jpeg', '.gif', '.bmp', '.png'); foreach ($unacceptables as $unacceptable) { if (strpos($link, $unacceptable) === true) { echo 'Unacceptable Found<br />'; } else { echo 'Acceptable!<br />'; } } 

Это печатание приемлемо каждый раз, хотя https содержится в переменной $ link.

Solutions Collecting From Web of "Простая функция PHP strpos не работает, почему?"

В случае сомнений прочитайте документы :

[strpos] Возвращает числовое положение первого появления иглы в строке стога сена.

Поэтому вы хотите попробовать нечто большее:

 // ... if (strpos($link, $unacceptable) !== false) { 

Потому что иначе strpos возвращает число, и вы ищете логическое значение true .

strpos () не возвращает true, когда находит совпадение, возвращает позицию первой соответствующей строки. Watchout, если совпадение является началом строки, оно возвращает индекс нуля, который будет сравниваться как равный false, если вы не используете оператор ===.

Неправильное состояние отказа.

strpos возвращает false, если совпадение не найдено, поэтому вам нужно явно проверить

 if (strpos($link, $unacceptable) !== false) { 

Строфы всегда возвращают позицию, подобную поиску «httpsL» в вашей строке («https://google.com&#xBB;;), тогда она возвращает 0-ю позицию, а PHP оценивает ее как ложную.

см. эту ссылку: (Надеюсь, что это очень полезно для вас): http://php.net/manual/en/function.strpos.php

 if (strpos($link, $unacceptable)) { } else { /* What you want to do when it is false */ } 

StrPos

функция может возвращать Boolean FALSE, но может также возвращать небулевое значение, которое вычисляется как FALSE.

Поэтому мне это понравилось

 if (strpos($link, $unacceptable) !== false) { //Code }