Intereting Posts
Не удается разрешить метод getStringArrayList, когда я создаю фильтр поиска для Listview PHP Amazon S3 обеспечивает доступ к приватным файлам через URL Выпадающее раскрытие на основе предыдущего выбора Какая сортировка MySQL точно соответствует сопоставлению строк PHP? PHP SVG читается в OSX Mavericks (MAMP 3), используя Imagick Приложение Twitter oauth начало возвращать код ошибки 89 Недействительный или истекший токен после 1 года работы Публикация строки JSON на страницу PHP Полоса прокрутки страницы Facebook Tab Какова длина строки идентификатора сеанса PHP? Как я могу распечатать документ результатов XSLT с удаленными исходными элементами? Не удалось создать сеанс в php при вызове AJAX Исключить исключение «DOMException» с сообщением «Ошибка запроса иерархии» PHP Попытка получить свойство не-объекта Laravel, почему я не могу запустить успешную миграцию таблицы создания с немного отличающимся написанием имени таблицы? Скрыть текст «Корабль в другой адрес?» И флажок в Woocommerce checkout

Как добавить http: //, если он не существует в URL?

Как я могу добавить http:// к URL-адресу, если еще нет http:// или https:// или ftp:// ?

Пример:

 addhttp("google.com"); // http://google.com addhttp("www.google.com"); // http://www.google.com addhttp("google.com"); // http://google.com addhttp("ftp://google.com"); // ftp://google.com addhttp("https://google.com"); // https://google.com addhttp("http://google.com"); // http://google.com addhttp("rubbish"); // 

Http: // мусор

Измененная версия кода @nickf:

 function addhttp($url) { if (!preg_match("~^(?:f|ht)tps?://~i", $url)) { $url = "http://" . $url; } return $url; } 

Распознает ftp:// , ftps:// , http:// и https:// в случае, нечувствительном к регистру.

На момент написания статьи ни один из ответов не использовал встроенную функцию для этого:

 function addScheme($url, $scheme = 'http://') { return parse_url($url, PHP_URL_SCHEME) === null ? $scheme . $url : $url; } echo addScheme('google.com'); // "http://google.com" echo addScheme('https://google.com'); // "https://google.com" 

См. Также: parse_url()

Просто проверьте, есть ли протокол (обозначенный «: //») и добавьте «http: //», если этого не произошло.

 if (false === strpos($url, '://')) { $url = 'http://' . $url; } 

Примечание . Это может быть простым и parse_url решением, но ответ Джека, использующий parse_url , почти такой же простой и надежный. Вероятно, вы должны использовать этот.

Сканируйте строку для :// , если она ее не имеет, добавьте http:// в строку .., все остальное просто использует строку как есть.

Это будет работать, если у вас нет входной строки мусора.

Лучший ответ для этого будет примерно таким:

 function addhttp($url) { return $url = empty(parse_url($url)['scheme']) ? 'http://' . ltrim($url, '/') : $url; } 

модифицированный раствор никеля:

 function addhttp($url) { if (!preg_match("@^https?://@i", $url) && !preg_match("@^ftps?://@i", $url)) { $url = "http://" . $url; } return $url; } 
 <?php if (!preg_match("/^(http|ftp):/", $_POST['url'])) { $_POST['url'] = 'http://'.$_POST['url']; } $url = $_POST['url']; ?> 

этот код добавит http: // к URL-адресу, если его там нет.

Попробуй это. Не является водонепроницаемым * , но может быть достаточно хорошим:

 function addhttp($url) { if (!preg_match("@^[hf]tt?ps?://@", $url)) { $url = "http://" . $url; } return $url; } 

* : то есть префиксы типа "fttps: //" считаются действительными.

используйте prep_url ($ url);

 $url = prep_url($url); 

если проверить, существует ли HTTP, ничего не произойдет, иначе добавьте http: //