Ho bisogno di una funzione PHP che produca un nome di dominio puro dall'URL. Quindi questa funzione deve essere rimossa http://
, www
e /
(barra) parti dall'URL se queste parti esistono. Ecco esempi di input e output: Input ->http://www.google.com/ | Output -> google.com
Ingresso ->http://google.com/ | Output -> google.com
Ingresso -> www.google.com/ | Output -> google.com
Ingresso -> google.com | Output -> google.com
Ingresso -> google.com | Output -> google.com
Ho controllato la funzione parse_url
, ma non restituisce ciò di cui ho bisogno. Dato che sono un principiante in PHP, è stato difficile per me. Se hai qualche idea, per favore rispondi.
Grazie in anticipo.Come rimuovere http: //, www e slash dall'URL in PHP?
risposta
$input = 'www.google.co.uk/';
// in case scheme relative URI is passed, e.g., //www.google.com/
$input = trim($input, '/');
// If scheme not included, prepend it
if (!preg_match('#^http(s)?://#', $input)) {
$input = 'http://' . $input;
}
$urlParts = parse_url($input);
// remove www
$domain = preg_replace('/^www\./', '', $urlParts['host']);
echo $domain;
// output: google.co.uk
funziona correttamente con tutti i vostri input di esempio.
e cosa succede se non è www ma secure.google.com? – Gordon
Yeap, questo è quello che mi serve. Grazie mille! – JohnUS
@Gordon: domanda dichiarata 'deve essere rimossa http: //, www e /'. Sottodomini arbitrari non ne facevano parte e non avrebbero funzionato comunque se ne avesse avuto bisogno. – webbiedave
Usa parse_url
Prova questo, rimuoverà quello che volevi (http :: //, www e slash), ma manterrà gli altri sottodomini example.google.com quali
$host = parse_url('http://www.google.com', PHP_URL_HOST);
$host = preg_replace('/^(www\.)/i', '', $host);
e cosa succede se non è www ma secure.google.com? – Gordon
L'OP ha chiesto specificamente di rimuovere http: //, www e il trailing rimosso, quindi la mia soluzione rimuove solo questi. Altre soluzioni potrebbero essere molto più complicate e probabilmente richiederebbero un database di eccezioni, i domini .uk, .tw potrebbero causare problemi. – h00ligan
if (!preg_match('/^http(s)?:\/\//', $url))
$url = 'http://' . $url;
$host = parse_url($url, PHP_URL_HOST);
$host = explode('.', strrev($host));
$host = strrev($host[1]) . '.' strrev($host[0]);
Questo sarebbe tornare dominio di secondo livello, anche se sarebbe inutile per i domini .it diciamo, così si potrebbe desiderare di fare un po 'più di controllo, e comprendono parti aggiuntive se strrev ($ host [0]) è uk, au, ecc.
Ci sono molti modi per estrarre il dominio da un url che ho pubblicato in 4 modi qui sotto iniziando dal più breve al più lungo.
# 1
function urlToDomain($url) {
return implode(array_slice(explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url)), 0, 1));
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 2
function urlToDomain($url) {
$domain = explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url));
return $domain['0'];
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 3
function urlToDomain($url) {
$domain = preg_replace('/https?:\/\/(www\.)?/', '', $url);
if (strpos($domain, '/') !== false) {
$explode = explode('/', $domain);
$domain = $explode['0'];
}
return $domain;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 4
function urlToDomain($url) {
if (substr($url, 0, 8) == 'https://') {
$url = substr($url, 8);
}
if (substr($url, 0, 7) == 'http://') {
$url = substr($url, 7);
}
if (substr($url, 0, 4) == 'www.') {
$url = substr($url, 4);
}
if (strpos($url, '/') !== false) {
$explode = explode('/', $url);
$url = $explode['0'];
}
return $url;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Tutte le funzioni sopra restituiscono la stessa risposta: example.com
$str = 'http://www.google.com/';
$str = preg_replace('#^https?://#', '', rtrim($str,'/'));
echo $str; // www.google.com
- 1. Rimuovere "www", "http: //" dalla stringa
- 2. Nginx Rimuovere WWW e rispondere agli Sia
- 3. PHP intestazione rimuovere HTTP
- 4. Reindirizzamento https a non www e http a www
- 5. Rimuovere slash se non una directory con apache
- 6. .htaccess redirect sia http: // con e senza www e https: // www a https: // www non
- 7. Rimuovere Prefisso URL da String (http: /, www, ecc)
- 8. gioco Framework2: rimuovere slash da URL
- 9. Siti www e non www
- 10. Rimuovere Trailing Slash dall'URL di Magento
- 11. PHP Regex per rimuovere http: // dalla stringa
- 12. json_encode() in fuga slash
- 13. Rimuovere www site-wide, forzare https su determinate directory e http sul resto?
- 14. Come sostituire http: // o www con <a href.. in PHP
- 15. Come rimuovere sempre WWW da un URL con mod_rewrite?
- 16. Autenticazione HTTP - Intestazione WWW-Authenticate - regni multipli
- 17. IIS Reindirizzamento da non www a www E da http a https
- 18. Il modo migliore per gestire https, http, www e no www con Google analytics
- 19. Dove impostare PHP $ _SERVER ['DOCUMENT_ROOT'] Trailing Slash?
- 20. url trailing slash e seo
- 21. Come rimuovere intestazioni HTTP specifiche in Javascript
- 22. Cookie su HTTP e HTTPS in PHP
- 23. Autorizzazione in API HTTP RESTful, 401 Autenticazione WWW
- 24. slash in variabili URL
- 25. nginx e slash con delega passo
- 26. Come reindirizzare in modo permanente http: // e www. URL su https: // su google app engine
- 27. x-www-form-urlencoded Vs JSON HTTP POST
- 28. Come reindirizzare gli URL non www a www utilizzando htaccess?
- 29. Problema trailing slash
- 30. unoconv funziona da terminale utilizzando www-data, ma non da script php anche come www-data
Questo è un duplicato di decine di domande. – tplaner
parse_url manterrà il nome di dominio completo, inclusi i sottodomini, ad es. non gira www.google.com in google.com – Gordon
La seconda risposta più votata qui (http://stackoverflow.com/questions/276516/parsing-domain-from-url-in-php) è probabilmente la scommessa più semplice . – BenOfTheNorth