Отформатируйте URL-адрес веб-сайта в виде строки с http: // upfront - PullRequest
4 голосов
/ 22 марта 2011

У меня есть система комментариев, которая позволяет автоматически связывать URL.Я использую CakePHP, но решение больше просто PHP.вот что происходит.

, если пользователь вводит полный URL с помощью http:// или https://, все в порядке.но если они вводят www.scoobydoobydoo.com, оно превращается в http://cool-domain.com/www.scoobydoobydoo.com.По сути, CakePHP понимает, что http | https - это внешний URL, поэтому он работает с http | https не иначе.

Моя идея состояла в том, чтобы сделать что-то вроде str с URL-адресом и заставить его вставить http, если его нет.,к сожалению, все, что я пытаюсь сделать, только усугубляет ситуацию.Я noob :) любая помощь / указатель приветствуется.

спасибо

РЕДАКТИРОВАТЬ: отправка фрагмента решения.возможно, не самый лучший, но, по крайней мере, благодаря ответу у меня есть кое-что.

Ответы [ 4 ]

9 голосов
/ 22 марта 2011
$url = "blahblah.com";
// to clarify, this shouldn't be === false, but rather !== 0
if (0 !== strpos($url, 'http://') && 0 !== strpos($url, 'https://')) {
   $url = "http://{$url}";
}
5 голосов
/ 22 марта 2011

Попробуйте функцию parse_url: http://php.net/manual/en/function.parse-url.php

Я думаю, это поможет вам.

0 голосов
/ 06 июня 2019

У меня была похожая проблема, поэтому я создал следующую функцию php:

    function format_url($url)
{
    if(!$url) return null;
    $parsed_url = parse_url($url);
    $schema     = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : 'http://';
    $host     = isset($parsed_url['host']) ? $parsed_url['host'] : '';
    $path     = isset($parsed_url['path']) ? $parsed_url['path'] : '';
    return "$schema$host$path";
}

, если вы отформатируете следующее: format_url ('abcde.com'), результат будет http://abcde.com.

0 голосов
/ 26 апреля 2015

Вот регулярное выражение: https://stackoverflow.com/a/2762083/4374834

p.s. @Vangel, ответ Майкла Мактирнана правильный, поэтому, пожалуйста, изучите ваш PHP, прежде чем сказать, что что-то может не получиться:)

...