Bu URL var değilse http:// nasıl eklenir?

8 Cevap php

Bir http:// veya https:// veya ftp:// yoksa url http:// nasıl eklenir?

Örnek:

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://rubbish

8 Cevap

Kod nickf @ değiştirilmiş bir versiyonu:

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

Olgu duyarsız bir şekilde ftp://, ftps://, http:// ve https:// tanır.

Simply (":/ /" ile şekillenmiş) bir protokol olup olmadığını kontrol edin ve orada değilse, "http://" ekleyin.

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

Yazma zamanda, cevapların hiçbiri bunun için yerleşik bir işlevi kullanılır:

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"

Ayrıca bakınız: parse_url()

Bunu yoksa, :// için dize tarayın, başına http:// dizeye .., her şey sadece olduğu gibi dize kullanabilirsiniz.

Eğer çöp giriş dizesi yoksa bu işe yarayacak.

nickf çözüm modifiye:

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'];

?>

orada değilse bu kod URL http:// katacak.

Bu deneyin. * su geçirmez, ama yeterince iyi olabilir Not:

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

*: yani, gibi önek "fttps :/ /" olarak geçerli kabul edilir.

prep_url ($ url) kullanın;

$url = prep_url($url);

http hiçbir şey mevcut olup olmadığını kontrol edin, aksi takdirde bu http://