Проверка URL php - PullRequest
       1

Проверка URL php

0 голосов
/ 28 января 2010

Задача - найти, начинается ли строка с http: // или https: // или ftp: //

$ regex = "((https? | Ftp): //)?";

, но preg_match ($ regex) работает неправильно.Что я должен изменить?

Ответы [ 4 ]

3 голосов
/ 28 января 2010

Вы должны использовать разделитель (/) вокруг RegExp:)

// Protocol's optional
$regex = "/^((https?|ftp)\:\/\/)?/";
// protocol's required
$regex = "/^(https?|ftp)\:\/\//";

if (preg_match($regex, 'http://www.google.com')) {
    // ...
}

http://br.php.net/manual/en/function.preg-match.php

1 голос
/ 28 января 2010

Нужно ли использовать регулярные выражения? Можно достичь того же, используя строковые функции:

if (strpos($url, 'http://')  === 0 ||
    strpos($url, 'https://') === 0 ||
    strpos($url, 'ftp://')   === 0)
{
    // do magic
}
0 голосов
/ 28 января 2010

Как это:

$search_for = array('http', 'https', 'ftp');
$scheme = parse_url($url, PHP_URL_SCHEME);
if (in_array($scheme, $search_for)) {
    // etc.
}
0 голосов
/ 28 января 2010

Вам нужно: preg_match ('#((https?|ftp)://)?#', $url)

Разделители # устраняют необходимость в экранировании /, что более удобно для URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...