7

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

1

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

Вот мой код:

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

У меня есть две строки, и я не знаю, как правильно использовать функции для проверки их начала. Помогите, пожалуйста!

2 ответ(ов)

0

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

if (preg_match('#^http#', $url) === 1) {
    // Начинается с http (учитывая регистр).
}

Если вам нужно сделать поиск без учета регистра, используйте:

if (preg_match('#^http#i', $url) === 1) {
    // Начинается с http (без учета регистра).
}

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

if (preg_match('#^https?://#i', $url) === 1) {
    // Начинается с http:// или https:// (без учета регистра).
}

С точки зрения производительности, вам не нужно создавать новую строку (в отличие от функции substr) или парсить всю строку, если она не начинается с того, что вам нужно. Однако стоит отметить, что при первом использовании регулярного выражения вы понесете определенные затраты на его создание/компиляцию.

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

0

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

function has_prefix($string, $prefix) {
   return substr($string, 0, strlen($prefix)) == $prefix;
}

$url   = 'http://www.google.com';
echo 'URL ' . (has_prefix($url, 'http://')  ? 'начинается' : 'не начинается') . ' с http://';
echo 'URL ' . (has_prefix($url, 'https://') ? 'начинается' : 'не начинается') . ' с https://';

Эта функция has_prefix принимает строку и префикс, и проверяет, начинается ли строка с указанного префикса. В приведенном примере проверяется, начинается ли URL с http:// и https://, и выводится соответствующее сообщение.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь