Как проверить, начинается ли строка с указанной строкой?

Я пытаюсь проверить, начинается ли строка с http . Как я могу выполнить эту проверку?

 $string1 = 'google.com'; $string2 = 'http://www.google.com'; 

Solutions Collecting From Web of "Как проверить, начинается ли строка с указанной строкой?"

 substr( $string_n, 0, 4 ) === "http" 

Если вы пытаетесь убедиться, что это не другой протокол. Вместо этого я бы использовал http:// , так как https также соответствовал бы и другим вещам, таким как http-protocol.com.

 substr( $string_n, 0, 7 ) === "http://" 

И вообще:

 substr($string, 0, strlen($query)) === $query 

Использовать strpos() :

 if (strpos($string2, 'http') === 0) { // It starts with 'http' } 

Помните три знака равенства ( === ). Он не будет работать должным образом, если вы используете только два. Это связано с тем, что strpos() вернет false если игла не может быть найдена в стоге сена.

Существует также strncmp() функция strncasecmp() которая идеально подходит для этой ситуации:

 if (strncmp($string_n, "http", 4) === 0) 

В целом:

 if (strncmp($string_n, $prefix, strlen($prefix)) === 0) 

Преимущество над подходом substr() заключается в том, что strncmp() просто делает то, что нужно сделать, не создавая временную строку.

Вы можете использовать простое регулярное выражение (обновленная версия от пользователя viriathus, поскольку eregi устарела)

 if (preg_match('#^http#', $url) === 1) { // Starts with http (case sensitive). } 

или если вы хотите нечувствительный к регистру поиск

 if (preg_match('#^http#i', $url) === 1) { // Starts with http (case insensitive). } 

Режимы позволяют выполнять более сложные задачи

 if (preg_match('#^https?://#i', $url) === 1) { // Starts with http:// or https:// (case insensitive). } 

Эффективность, вам не нужно создавать новую строку (в отличие от substr) и не анализировать всю строку, если она не начинается с того, что вы хотите. У вас будет штраф за выполнение, хотя в первый раз вы используете регулярное выражение (вам нужно создать / скомпилировать его).

Это расширение поддерживает глобальный кеш-поток в потоке скомпилированных регулярных выражений (до 4096). http://www.php.net/manual/en/intro.pcre.php

Вы можете проверить, начинается ли ваша строка с http или https с помощью функции preg_match, пример ниже.

 $url = 'http://www.google.com'; $http = preg_match('/^http[^s]/i', $url); $https = preg_match('/^https/i', $url); echo 'the url ' . ($http ? 'does' : 'does not') . ' start with http'; echo 'the url ' . ($https ? 'does' : 'does not') . ' start with https'; 

Также работа:

 if (eregi("^http:", $url)) { echo "OK"; }