IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Aide regex nom de domaine


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 46
    Points
    46
    Par défaut Aide regex nom de domaine
    Bonjour,

    j'ai besoin d'aide pour une regex !

    J'ai un pattern : \.fr|\.es|\.de|\.it

    je souhaite rediriger tous les ndd qui n'ont pas ces extensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(preg_match("/(.*?)(!(\.fr|\.es|\.de|\.it))$/", $host, $matches)) {
            	$routingNecessary = true;
    }
    le ! devant la liste des extensions ne marche pas. Il est impératif que $matches soit alimenté comme ca je peut rediriger le .com sur le .fr en gardant le résultat de $matches (le domaine).

    toto.monsite.com --> toto.monsite.fr

    De ce fait je ne peux pas utiliser

    if(!preg_match("/(.*?)(\.fr|\.es|\.de|\.it)$/", $host, $matches)) { ... car je ne récupere pas $matches au passage.

    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pas besoin de preg_match pour ça, un substr + strpos suffis

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 46
    Points
    46
    Par défaut
    $matches est utilisé dans la suite du code...

    Il faut donc que je passe par preg_match

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 46
    Points
    46
    Par défaut
    Ou alors une regex pour récupérer l'extension d'un NDD.

    Mais attention aux extensions composées genre .co.uk, .com.tw etc...

    Je ne veux pas récupérer que .uk ou .tw

    J'ai plusieurs centaines de ndd pour le même site avec pas mal d'extensions composées.

    Merci de votre aide.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    pourquoi ne pas décomposer ton code ?

    Par le premier preg_match; tu récupère seulement l'extension. puis tu vérifie si l'extension nécessite un redirect ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(preg_match("/(\..*)$/", $host, $matches)) {
         if (strpos('.fr.es.de.it',$matches[0]) === false) $routingNecessary = true;
    }
    Par contre assure toi que $host soit bien un nom de domaine.

    Pour les noms de domaines composés c'est plus compliqué mais pour domain.co.uk tu auras '.co.uk' dans $matches[0];

    Alors tentons cette approche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(preg_match("/(\..*)$/", $host, $matches)) {
         $exts = explode('.',$matches[0]);
         foreach ($exts as $ext) {
              if (strpos('fr|es|de|it',$matches[0]) === false) $routingNecessary = true;
    }}

Discussions similaires

  1. Aide pour configurer mon nom de domaine chez 1&1
    Par aloisio11 dans le forum Domaines
    Réponses: 2
    Dernier message: 27/08/2008, 13h49
  2. Serveur web qui supporte deux noms de domaines
    Par antigone dans le forum Réseau
    Réponses: 7
    Dernier message: 30/08/2004, 11h59
  3. Récupérer le nom de domaine d'appartenance d'un serveur
    Par Laurent Dardenne dans le forum Windows
    Réponses: 2
    Dernier message: 26/01/2004, 17h01
  4. ip fixeou nom de domaine sur ordi perso
    Par windob dans le forum Développement
    Réponses: 15
    Dernier message: 14/01/2004, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo