Vous n'êtes pas identifié.

Annonces

Les pages de ce Forum sont exploitables par les Navigateurs FireFox, Google Chrome, Opera, Safari, Konqueror, Netscape & MSIE.

#1 [↑] [↓]21/11/2006 09:58:04

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Extraire un nom de domaine d'une URL

Voici le code pour l'extraction d'un NDD dans une variable contenant une URL :
[Vous devez être identifié pour voir le texte caché.]
C'est tout !
wink
Alain AKA Arma

Code :

<?php
// Chaine contenant l'URL
$url = 'http://www.cigiema.fr/index.php';

// Repérer le nom de Domaine dans l'URL
preg_match("/^(http:\/\/)?([^\/]+)/i",$url,$chaines);
$host = $chaines[2];

// Repérer les derniers segments
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$chaines);
echo 'Nom de domaine : '.$chaines[0]."\n";
?>

Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#2 [↑] [↓]22/11/2006 13:34:24

rgo74
Ami des Alpages
rgo74
Lieu: Toute la Haute Savoie
Date d'inscription: 17/05/2006
Messages: 911
Site web

Re: Extraire un nom de domaine d'une URL

Merci Crazy ---> pour quelles applications ? Un exemple ?


Hors ligne

 

#3 [↑] [↓]22/11/2006 14:07:11

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

Des exemples comme cela, à brûle pourpoint, je n'en ai pas...
Mais c'etait en relation avec ce Topic : t795-Filtrage-lors-extraction-donnees
Et comme cette procédure est en PHP et qu'elle n'avait pas sa place dans un Forum SQL (MySQL) je l'ai séparée...
wink
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#4 [↑] [↓]23/11/2006 19:51:15

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Extraire un nom de domaine d'une URL

Il serait plus intéressant d'extraire l'url du Dossier dans lequel se trouve la page,
éventuellement avec un FLAG BOOL pour retourner une URL absolue ou relative à la racine du site...
Une telle Fonction mériterait d'être conservée dans une LIB de Développement...


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#5 [↑] [↓]23/11/2006 21:21:14

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

Pour ce la, il y a :


     - $_SERVER["HTTP_REFERER"] : http://www.cigiema.fr/
     - $_SERVER["REQUEST_URI"] : /index.php
(si dossier, faire un preg_split() sur expression rationelle...)

lol
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#6 [↑] [↓]12/10/2008 12:15:36

aurelienmorillon
Privilégié
aurelienmorillon
Lieu: Vendée
Date d'inscription: 12/10/2008
Messages: 15
Site web

Re: Extraire un nom de domaine d'une URL

Bonjour,

J'utilise cette regex pour extraire les noms de domaine, seulement ça ne fonctionne pas pour les TLD composés (.co.uk,.co.ma, etc...)

Malgré quelques bidouilles, je n'ai pas réussi à l'adapter : (Il faut dire que les regex, c'est pas mon fort).

Avez vous trouvé une solution à ce problème ?

Merci par avance,

Aurelien


Elles sont fraiches nos stats, elles arrivent par flux RSS : okMetrics - Stats par flux RSS
Trouvez une location de salle pour organiser votre évènement
Noël, c'est toute l'année ! Enfilez votre déguisement de lutin
Mon dernier livre et mes humeurs : aurelien-morillon.com

Hors ligne

 

#7 [↑] [↓]12/10/2008 12:39:21

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

Oui, il y a une solution (nul besoin de REGEX pour obtenir un résultat dans le cas présent) cool

Paramètres :
- Entrée : $url (n'importe quel format) ;
- Sortie : $extracted_domain

Code :

Code :

// Tester éventuellement la présence de 'http://'
if (!strstr($url, 'http://')) $url = 'http://'.$url';

// Extraction du NDD complet
$url_sliced_array = explode('/', $url);
$extracted_domain = $url_sliced_array[2];

/*
// Explications :
$url_sliced_array[0] == 'http:';
$url_sliced_array[1] == ''; // Chaîne vide !
$url_sliced_array[2] == '[[subsubdomain.]subdomain.]domain.tld[.uppertld]'; // [item] optionnel... SSV...
// etc... (éventuels répertoire, sous-répertoire et nom de page web [avec ou sans paramètres])
*/

// A tester :
// $extracted_domain = explode('/', $url)[2]; // Pourquoi pas ? Et ce serait encore plus rapide...
// Mais là, j'ai un doute sur les capacités du préprocesseur PHP...

C'est élégant et amplement suffisant !
big_smile
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#8 [↑] [↓]12/10/2008 15:27:55

aurelienmorillon
Privilégié
aurelienmorillon
Lieu: Vendée
Date d'inscription: 12/10/2008
Messages: 15
Site web

Re: Extraire un nom de domaine d'une URL

Merci Alain !

Comme je ne maîtrise pas l'url en entrée, elle peut avoir un sous domaine, ou pas.
Reste plus qu'à trouver un moyen de le virer s'il est présent. smile


Elles sont fraiches nos stats, elles arrivent par flux RSS : okMetrics - Stats par flux RSS
Trouvez une location de salle pour organiser votre évènement
Noël, c'est toute l'année ! Enfilez votre déguisement de lutin
Mon dernier livre et mes humeurs : aurelien-morillon.com

Hors ligne

 

#9 [↑] [↓]12/10/2008 15:36:09

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

C'est facile aussi... whistling ...
Idem que précédemment !
Il y a 3 cas :
- pas de sous-domaine ;
- sous-domaine www[n] ;
- sous-sous-domaine.sous-domaine !
Là, ça se complique un peu (le REGEX est nécessaire big_smile).

Voila ce que j'ai fait pour formater correctement des URL :
(désolé, ce code de T@rlouze est réservé aux membres)
[Vous devez être identifié pour voir le texte caché.]
wink
Alain AKA Arma

PS : Cela n'extrait pas le NDD. Mais moyennant quelques lignes de code de plus, cela pourra le faire ! cool

Code :

function format_submitted_url($url)
{
	if (strstr($url, 'http://')) $url = substr($url,7); // On enlève le http:// avant le traitement
	if (substr($url,-1) != '/') $url = $url.'/'; // S'il n'y en a pas, on ajoute un / arbitraire à la fin de l'URL
	$url = str_replace('//','/',$url); // Si des fieffés tricheurs mettent un ou deux / à la fin... C'est ballot, mais on ne sait jamais...
	// Traitement ( si pas de ww[w]X présent)
	if (!preg_match("!^[w]{2}[w]?[0-9]+!i",$url))
	{
		// On considère toujours que c'est un sous-domaine
		if (preg_match("!^[w]{3}\.!i",$url)) $url = substr($url,4); // On supprime les www et le point éventuels (si domaine) !
		if (preg_match("!^[w]{2}\.!i",$url)) $url = substr($url,3); // On supprime les ww et le point éventuels (si domaine), il arrive parfois qu'un w soit oublié !
		// Si ce n'est pas un sous-domaine avéré (voire encore pire) --> On va remettre les www et le point !
		if (preg_match("!^[^.]+\.([a-z]{2,4}|[a-z]{2}\.[a-z]{2})/!i",$url)) $url = 'www.'.$url;
		elseif (preg_match("!^[^.]+\.(com\.[a-z]{2}|int\.[a-z]{2}|edu\.[a-z]{2}|jed\.[a-z]{2}|gov\.[a-z]{2}|gouv\.[a-z]{2}|asso\.[a-z]{2})/!i",$url)) $url = 'www.'.$url;
	}
	// On supprime le / qui se trouve à la fin de l'URL (il vaut mieux supprimer celui que l'on a ajouté si il y a des paramètres ou une page spécifique)
	$url = 'http://'.substr($url,0,(strlen($url) - 1)); // On remet aussi le http://, c'est mieux !
	// Et vlan ! On renvoit le bazar... Mais sans majuscules !
	return strtolower($url);
}

Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#10 [↑] [↓]14/10/2008 15:41:36

BlackMelvyn
Red is Dead
BlackMelvyn
Date d'inscription: 24/06/2008
Messages: 108

Re: Extraire un nom de domaine d'une URL

Sympa ce truc. Merci wink
De mon côté, j'utilise parse_url associé à une regex pour extraire les NDD


doux, chaud et pas koku
Un petit annuaire dédié aux enfants http://www.annuairedesenfants.net et aux sites pour enfants

Hors ligne

 

#11 [↑] [↓]14/10/2008 16:05:56

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

Donc, pour faire la fonction exacte demandée, si Aurélien n'a pas trouvé mieux, il suffit de faire ceci :
(members only - sorry - because this is high tarlouzery zarbi script here)
[Vous devez être identifié pour voir le texte caché.]
Ah ah ah ah ah...
Il en voulait du REGEX... Il est servi ! big_smile
happy
Alain AKA Arma

Code :

// Tester éventuellement la présence de 'http://'
if (strstr($url, 'http://')) $url = substr($url,7); // On enlève le http:// avant le traitement
if (substr($url,-1) != '/') $url = $url.'/'; // S'il n'y en a pas, on ajoute un / arbitraire à la fin de l'URL

// Y a-t-il des www ou autre forme ? si oui, on les vire !
if (preg_match("!^[w]{2}[w]?[0-9]+!i",$url))
{
	$sliced_www = explode('.',$url);
	$sliced_www[0] = '';
	$url = substr(implode('.',$sliced_www),1);
}

// Extraction du NDD complet sans aucun sous-domaine
$url_sliced_array = explode('/', $url);
if ((preg_match("!^[^.]+\.([a-z]{2,4}|[a-z]{2}\.[a-z]{2})/!i",$url_sliced_array[2])) ||
 (preg_match("!^[^.]+\.(com\.[a-z]{2}|int\.[a-z]{2}|edu\.[a-z]{2}|jed\.[a-z]{2}|gov\.[a-z]{2}|gouv\.[a-z]{2}|asso\.[a-z]{2})/!i",$url_sliced_array[2])))
	$extracted_domain = $url_sliced_array[2];
else // il doit y avoir un sous-domaine (voire plus... mais là, c'est zarbi !)
{
	$sliced_subdomain = explode('.',$url_sliced_array[2]);
	$sliced_subdomain[0] = '';
	$extracted_domain = substr(implode('.',$sliced_subdomain),1);
}
// Euh, s'il y a un sous-sous-domaine, c'est c*n... Et ça ne marche pas ! lol

Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#12 [↑] [↓]16/10/2008 19:13:26

aurelienmorillon
Privilégié
aurelienmorillon
Lieu: Vendée
Date d'inscription: 12/10/2008
Messages: 15
Site web

Re: Extraire un nom de domaine d'une URL

Code :

if (strstr($url, 'http://')) $url = substr($url,7); // On enlève le http:// avant le traitement
		if (substr($url,-1) != '/') $url = $url.'/'; // S'il n'y en a pas, on ajoute un / arbitraire à la fin de l'URL
		
		// Y a-t-il des www ou autre forme ? si oui, on les vire !
		if (preg_match("!^[w]{2}[w]?[0-9]+!i",$url))	{
			$sliced_www = explode('.',$url);
			$sliced_www[0] = '';
		 $url = substr(implode('.',$sliced_www),1);
		}
		
echo $url; //Vrillé !

		// Extraction du NDD complet sans aucun sous-domaine
		$url_sliced_array = explode('/', $url);
		if ((preg_match("!^[^.]+\.([a-z]{2,4}|[a-z]{2}\.[a-z]{2})/!i",$url_sliced_array[2])) || (preg_match("!^[^.]+\.(com\.[a-z]{2}|int\.[a-z]{2}|edu\.[a-z]{2}|jed\.[a-z]{2}|gov\.[a-z]{2}|gouv\.[a-z]{2}|asso\.[a-z]{2})/!i",$url_sliced_array[2])))
		$extracted_domain = $url_sliced_array[2];
	else // il doit y avoir un sous-domaine (voire plus... mais là, c'est zarbi !)
	{
		$sliced_subdomain = explode('.',$url_sliced_array[2]);
		$sliced_subdomain[0] = '';
		$extracted_domain = substr(implode('.',$sliced_subdomain),1);
	}
	// Euh, s'il y a un sous-sous-domaine, c'est c*n... Et ça ne marche pas ! lol

Re - J'ai enfin eu quelques minutes pour tester. Ca commence à vriller là où j'ai inséré le echo : La variable $url contient toujours les "www."

Dernière modification par aurelienmorillon (16/10/2008 19:42:15)



Elles sont fraiches nos stats, elles arrivent par flux RSS : okMetrics - Stats par flux RSS
Trouvez une location de salle pour organiser votre évènement
Noël, c'est toute l'année ! Enfilez votre déguisement de lutin
Mon dernier livre et mes humeurs : aurelien-morillon.com

Hors ligne

 

#13 [↑] [↓]16/10/2008 19:47:57

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Extraire un nom de domaine d'une URL

Bah oui blush
Remplace :

Code :

if (preg_match("!^[w]{2}[w]?[0-9]+!i",$url))

Par :

Code :

if (preg_match("!^[w]{2}[w]?[0-9]*!i",$url))

Cela sera beaucoup mieux !
wink
Alain AKA Arma

PS : Ceci devant fonctionner pour supprimer les ww, wwN, www ou wwwN, etc.
N = chiffre ou nombre quelconque


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

Pied de page des forums

Powered by PunBB modified
© Copyright 2002–2005, Rickard Andersson
© Interface & Functional Add-ons Copyright 2006-2007, by Crazy


RSS Forum CIGIEMA

© 2006-2012 / A. G.
CiGi€M@®, 1997-2012
IDDN Reproduction totale ou partielle strictement interdite
Contact :
/