Jak mogę dodać http://
do adresu URL, jeśli nie zawierają już protokół (na przykład http://
, https://
lub ftp://
)?
Przykład:
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
mozilla.org
sam, skąd wiedziałbyś, czy tak powinno byćhttp
,https
czyftp
?Odpowiedzi:
Zmodyfikowana wersja kodu @nickf:
Uznaje
ftp://
,ftps://
,http://
ihttps://
w ten sposób nie uwzględnia wielkości liter.źródło
$url = "www.google.com"; $init = microtime(true); for( $i = 1; $i < 100000; $i++ ) { addScheme( $url ); } echo microtime(true) - $init; echo "<BR>"; $init = microtime(true); for( $i = 1; $i < 100000; $i++ ) { addhttp( $url ); } echo microtime(true) - $init;
W chwili pisania tego tekstu żadna z odpowiedzi nie korzystała z wbudowanej funkcji:
Zobacz też:
parse_url()
źródło
echo addScheme('//google.com');
ltrim($url, '/')
Po prostu sprawdź, czy istnieje protokół (określony przez „: //”) i dodaj „http: //”, jeśli go nie ma.
Uwaga : może to być proste i nieskomplikowane rozwiązanie, ale odpowiedź Jacka
parse_url
jest prawie tak samo prosta i znacznie bardziej niezawodna. Prawdopodobnie powinieneś użyć tego.źródło
Najlepszą odpowiedzią na to byłoby coś takiego:
źródło
Przeszukaj łańcuch w poszukiwaniu
://
, jeśli go nie ma, dołączhttp://
go do ciągu .., wszystko inne po prostu użyj ciągu bez zmian.To zadziała, chyba że masz niepotrzebny ciąg wejściowy.
źródło
zmodyfikowany roztwór nickf:
źródło
ftps://
jest również ważny.ten kod doda http: // do adresu URL, jeśli go tam nie ma.
źródło
Spróbuj tego. Nie jest wodoszczelny
*
, ale może być wystarczająco dobry:*
: to znaczy, przedrostki takie jak „fttps: //” są traktowane jako prawidłowe.źródło