Bagaimana saya bisa menambahkan http://
ke URL jika belum menyertakan protokol (misalnya http://
, https://
atau ftp://
)?
Contoh:
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
sendirian, bagaimana Anda tahu apakah itu harushttp
,https
atauftp
?Jawaban:
Versi kode @nickf yang dimodifikasi:
Mengakui
ftp://
,ftps://
,http://
danhttps://
dengan cara kasus tidak sensitif.sumber
$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;
Pada saat penulisan, tidak ada jawaban yang menggunakan fungsi bawaan untuk ini:
Lihat juga:
parse_url()
sumber
echo addScheme('//google.com');
ltrim($url, '/')
Cukup periksa apakah ada protokol (digambarkan oleh ": //") dan tambahkan "http: //" jika tidak ada.
Catatan : Ini mungkin solusi yang sederhana dan lugas, tetapi jawaban Jack yang digunakan
parse_url
hampir sesederhana dan jauh lebih kuat. Anda mungkin harus menggunakan yang itu.sumber
Jawaban Terbaik untuk ini adalah seperti ini:
sumber
Pindai string untuk
://
, jika tidak memilikinya, tambahkanhttp://
ke string .., yang lainnya cukup gunakan string apa adanya.Ini akan bekerja kecuali Anda memiliki string masukan sampah.
sumber
solusi nickf dimodifikasi:
sumber
ftps://
juga valid.kode ini akan menambahkan http: // ke URL jika tidak ada.
sumber
Coba ini. Tidak kedap air
*
, tapi mungkin cukup baik:*
: artinya, prefiks seperti "fttps: //" dianggap valid.sumber