Page 1 sur 1

Récuperer nom de domaine sans les sous domaine

Posté : 07 mai 2009, 19:19
par fabien_14
Bonjour,

J'utilise actuellement une petite fonction pour me réduire les url

Code : Tout sélectionner

function getDomain($url) { return preg_replace("/^[\w]{2,6}:\/\/([\w\d\.\-]+).*$/","$1",$url); }
Cependant en cas de sous domaine dans l'url ceci me donne le résultat : sousdomaine.test.com

Comment avoir ce résultat : test.com ?

Merci de votre aide :)

Posté : 07 mai 2009, 21:39
par thehawk
Ne connaissant pas particulièrement je serais tenter de te dire :

return preg_replace("/^[\w]{2,6}:\/\/[.?]{1}([\w\d\.\-]+).*$/","$1",$url);

mais je suis vraiment pas sur !

Posté : 07 mai 2009, 21:44
par fabien_14
Bonsoir,

Merci de ta réponse

cependant ceci ne fonctionne pas l'url ne change pas.

Posté : 07 mai 2009, 22:46
par Nours312
salut : pas trés productif ... mais bon ;)
function getDomain($url)
{
   $t = preg_replace("/^[\w]{2,6}:\/\/([\w\d\.\-]+).*$/","$1",$url);
   $r = explode('.', $t);
   retrun $r[count($r)-2].'.'.$r[count($r)-1];
} 

Posté : 08 mai 2009, 00:17
par Elie
Plus simple mais plus bete :)
function getDomain($url)
{
   $r = explode('.', $url);
   retrun $r[1].'.'.$r[2];
}
Ca marche peut importe l'url ...

Posté : 08 mai 2009, 09:20
par fabien_14
Merci de ta réponse,

cependant j'ai un message d'erreur :

Code : Tout sélectionner

Parse error: syntax error, unexpected T_VARIABLE in /homepages/21/xxxxxx/htdocs/test/zone/test.php on line 941

Posté : 08 mai 2009, 09:23
par Sodams
Peux-tu nous montrer cette fameuse ligne 941?

Posté : 08 mai 2009, 09:27
par fabien_14
Bonjour,

Code : Tout sélectionner

$url = 'http://sousdomaine.test.org/toto/index.html'; function getDomain($url) { $r = explode('.', $url); retrun $r[1].'.'.$r[2]; <<<<<< ligne défaut 941 } echo getDomain($url);

Posté : 08 mai 2009, 09:30
par Sodams
return
à la place de
retrun
:-)

Posté : 08 mai 2009, 09:37
par fabien_14
Yes merci :)

Par contre j'ai tester le code de Nours

Code : Tout sélectionner

function getDomain($url) { $t = preg_replace("/^[\w]{2,6}:\/\/([\w\d\.\-]+).*$/","$1",$url); $r = explode('.', $t); return $r[count($r)-2].'.'.$r[count($r)-1]; }
Celui ci fonctionne trés bien :)

Posté : 08 mai 2009, 12:36
par Elie
Le probleme est si l"url est http://google.fr

:)

Re: Récuperer nom de domaine sans les sous domaine

Posté : 30 sept. 2012, 12:07
par Stargame
Petite correction pour les domaines n'ayant pas de prefixe de sous domaine comme http://google.fr
function GetDomain($url){
     $r = explode('.', $url);
     if(isset($r[2])){
   	     return $r[1].'.'.$r[2];
     }else{
	     return $r[0].'.'.$r[1];
     }
}

Re: Récuperer nom de domaine sans les sous domaine

Posté : 30 sept. 2012, 12:26
par Elie
3 ans plus tard, il résolu le problème qui sauva l'humanité !