Как проверить, начинается ли строка с заданной подстроки?
Я пытаюсь проверить, начинается ли строка с http
. Как я могу выполнить эту проверку?
Вот мой код:
$string1 = 'google.com';
$string2 = 'http://www.google.com';
У меня есть две строки, и я не знаю, как правильно использовать функции для проверки их начала. Помогите, пожалуйста!
2 ответ(ов)
Вы можете использовать простое регулярное выражение (обновленная версия от пользователя 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
Вы можете проверить, начинается ли ваша строка с 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://
, и выводится соответствующее сообщение.
UTF-8 на всех уровнях!
Функции startsWith() и endsWith() в PHP
Что такое потокобезопасность и непотокобезопасность в PHP?
Как получить расширение файла в PHP?
Как передать переменные и данные из PHP в JavaScript?