Wie kann ich http://
zu einer URL , wenn es nicht bereits ein Protokoll enthalten (zB http://
, https://
oder ftp://
)?
Beispiel:
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
alleine wären, wie würden Sie wissen, ob es sein solltehttp
,https
oderftp
?Antworten:
Eine modifizierte Version von @nickf Code:
Erkennt
ftp://
,ftps://
,http://
undhttps://
in einem Fall unempfindlich Art und Weise.quelle
$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;
Zum Zeitpunkt des Schreibens verwendete keine der Antworten eine integrierte Funktion dafür:
Siehe auch:
parse_url()
quelle
echo addScheme('//google.com');
ltrim($url, '/')
Überprüfen Sie einfach, ob es ein Protokoll gibt (abgegrenzt durch ": //"), und fügen Sie "http: //" hinzu, falls dies nicht der Fall ist.
Hinweis : Dies mag eine einfache und unkomplizierte Lösung sein, aber Jacks Antwort
parse_url
ist fast genauso einfach und viel robuster. Sie sollten diesen wahrscheinlich verwenden.quelle
Die beste Antwort dafür wäre ungefähr so:
quelle
Scannen Sie die Zeichenfolge nach
://
, wenn sie nicht vorhanden ist, und stellen Siehttp://
sie der Zeichenfolge voran . Bei allen anderen Zeichenfolgen wird die Zeichenfolge einfach so verwendet, wie sie ist.Dies funktioniert nur, wenn Sie eine Müll-Eingabezeichenfolge haben.
quelle
Nickf-Lösung modifiziert:
quelle
ftps://
auch gültig.Dieser Code fügt der URL http: // hinzu, wenn sie nicht vorhanden ist.
quelle
Versuche dies. Nicht wasserdicht
*
, aber vielleicht gut genug:*
Präfixe wie "fttps: //" werden als gültig behandelt.quelle