мне нужно проверить переменную, чтобы увидеть, если строка начинается с HTTP: // или https: //находкой строка матч
, если он существует сделать что-то еще сделать другое. Как мне это сделать?
мне нужно проверить переменную, чтобы увидеть, если строка начинается с HTTP: // или https: //находкой строка матч
, если он существует сделать что-то еще сделать другое. Как мне это сделать?
preg_match('!^https?://!', $string)
вопрос остается неясным. Если вы просто хотите знать, если строка начинается с либо HTTP или HTTPS, вы можете использовать
$startsWithIt = (strpos($haystack, 'http') === 0);
Если вы хотите проверить, чтобы включить ://
вы должны сделать:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
Если вы нужно знать, какой из двух он, use Wrikken's answer.
Разумный ответ. Я бы хотел, чтобы люди переставали использовать регулярное выражение для правильного сопоставления строк. –
@Pixel: этот ответ не решает проблему. – SilentGhost
Это проверяет, начинается ли строка с 'http' или' https', но нет, если она начинается с 'http: //' или 'https: //'. –
Gumbo
Вы, наверное, ищете:
switch(parse_url($string, PHP_URL_SCHEME)){
case 'https':
//do something
case 'http':
//something else
default:
//anything else you'd like to support?
}
'$ urlScheme = parse_url ($ string, PHP_URL_SCHEME); switch ($ urlScheme) {'было бы еще более фантастическим, но это все еще отличный ответ. – erisco
Вот еще один:
function startsWithHttpOrHttps($haystack)
{
return substr_compare($haystack, 'http://', 0, 7) === 0
|| substr_compare($haystack, 'https://', 0, 8) === 0;
}
На моей машине это опередили мой двойной strpos
решение (даже с добавлением substr
, чтобы предотвратить перебирая строка полной длины) и Regex.
$startsWithIt = (strpos($haystack, 'http') === 0);
Если вы хотите проверить, чтобы включать: // вы должны сделать:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
ничего себе, что работал большой. Я не знал, что preg_match дает логическое значение, если оно истинно или ложно. У вас есть страница документа для регулярного выражения? Глядя на это сейчас, я думаю, что получаю это ...^начинается с ....? предыдущий символ может быть с ... не знаю, что! имею в виду. – Keith
'preg_match()' не возвращает логическое значение. Он возвращает количество найденных совпадений; поскольку он останавливается после первого совпадения, он может просто вернуть 0 или 1. Если вы проверяете возвращаемое значение как в 'if (preg_match() == TRUE) {}', то вы не получите ожидаемого результата. – kiamlaluno
Проголосовало за регулярное выражение. Хотя это технически правильно, это плохой совет. См. Ответ Гордонса для гораздо более быстрого решения. –