найти совпадение строки - PullRequest
1 голос
/ 30 июля 2010

Мне нужно проверить переменную, чтобы увидеть, начинается ли строка с http: // или https://

, если она существует, сделать что-то еще, сделать другое.Как бы я поступил так?

Ответы [ 5 ]

6 голосов
/ 30 июля 2010

Вы, вероятно, ищете:

switch(parse_url($string, PHP_URL_SCHEME)){
    case 'https':
        //do something
    case 'http':
        //something else
    default:
       //anything else you'd like to support?
}
4 голосов
/ 30 июля 2010
preg_match('!^https?://!', $string)

* документы 1003 *

3 голосов
/ 30 июля 2010

Вопрос неясен.Если вы просто хотите узнать, начинается ли строка с http или https , вы можете использовать

$startsWithIt = (strpos($haystack, 'http') === 0);

. Если вы хотите, чтобы проверка включала ://, вам нужно сделать:

if((strpos($haystack, 'http://') === 0) || 
   (strpos($haystack, 'https://') === 0)) {
       echo 'Strings starts with http:// or https://';    
}

Если вам нужно узнать, какой из двух он есть, используйте ответ Вриккена .

1 голос
/ 30 июля 2010

Вот еще одно:

function startsWithHttpOrHttps($haystack)
{
    return substr_compare($haystack, 'http://', 0, 7) === 0
        || substr_compare($haystack, 'https://', 0, 8) === 0;
}

На моей машине это превзошло моё двойное strpos решение (даже с добавленным substr, чтобы предотвратить переход по всей длине строки) и Regex.

0 голосов
/ 28 марта 2013
$startsWithIt = (strpos($haystack, 'http') === 0);

Если вы хотите, чтобы чек включал: // вы должны сделать:

if((strpos($haystack, 'http://') === 0) || 
   (strpos($haystack, 'https://') === 0)) {
   echo 'Strings starts with http:// or https://';    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...