Проверьте, если строка начинается с данной подстроки

У меня есть строка в переменной $str.

как я могу проверить, начинается ли это с некоторого слова?


Пример

$str = "http://somesite.com/somefolder/somefile.php";

когда я написал следующий script

if(strpos($str, "http://") == '0') echo "yes"; //returns yes

НО он возвращает да, даже когда я писал

if(strpos($str, "other word here") == '0') echo "yes"; //returns yes too

Я думаю, что strpos возвращает zero, если он тоже не может найти подстроку (или пустое значение).

Итак, что я могу сделать, если я хочу проверить слово, которое в начале строки? (может быть, я должен использовать === в этом случае?)

Спасибо

Ответы

Ответ 2

Вам нужно сделать:

if (strpos($str, "http://") === 0) echo "yes"

Оператор === - это строгое сравнение, которое не вызывает ограничений типов. Если вы используете ==, тогда false, пустая строка, null, 0, пустой массив и несколько других вещей будут эквивалентны.

См. Тип Жонглирование.

Ответ 3

проверить с помощью

if(strpos($str, "http://") === 0) echo "yes";

как == станет положительным как для ложных, так и для 0, проверьте документацию

Ответ 5

PHP имеет 2 функции, чтобы проверить, начинается ли строка с заданной подстрокой:

  • strncmp (с учетом регистра);
  • strncasecmp (без учета регистра);

Итак, если вы хотите протестировать только http (а не https), вы можете использовать:

 if (strncasecmp($str,'http://',7) == 0) echo "we have a winner"

Ответ 6

if(substr($str, 0, 7)=="http://") {
    echo("Statrs with http://");
}

Ответ 7

В большое количество предупреждений о:

Эта функция может возвращать Boolean FALSE, но может также возвращать небулевое значение, которое оценивается как FALSE, например 0 или "". Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

strpos может возвращать 0 или false. 0 равно false (0 == false). Однако он не идентичен false, который вы можете проверить с помощью 0 === false. Итак, правильный тест if (strpos(...) === 0).

Обязательно прочитайте разницу, важно: http://php.net/manual/en/language.operators.comparison.php

Ответ 8

strncmp($str, $word, strlen($word))===0

Является немного более результативным, чем strpos