Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petit script php complexe pour moi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit script php complexe pour moi

n°1835329
themen
A votre service, Mam'zelle
Posté le 07-01-2009 à 21:45:55  profilanswer
 

Bonsoir à tous :)
 
Je cherche à faire un script qui fonctionnerait de la manière suivante (je sais que le script n'est pas bon, mais j'ai essayé d'écrire la chose pour qu'on comprenne ce que je cherche à faire):
 
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); (ça, ça marche j'en suis sûr)
 
"$list = (".free.fr,.wanadoo.fr" );"
"si $hostname correspond à $list alors ..."
 
Mon but dans cet exemple est d'afficher un texte spécifique si son host correspond à *.free.fr et *.wanadoo.fr (par exemple, pc1.free.fr).
 
J'ai cherché du côté "array" et "preg_match" mais je ne sais pas utiliser ces fonctions correctement.
 
Merci d'avance à quiconque pourrait m'aider sur les fonctions à utiliser :)
 
Bonne soirée!

mood
Publicité
Posté le 07-01-2009 à 21:45:55  profilanswer
 

n°1835367
themen
A votre service, Mam'zelle
Posté le 07-01-2009 à 22:51:55  profilanswer
 

J'essaye actuellement de le faire avec preg_match.
 
Voici où j'en suis :

Code :
  1. function verif($host) {
  2. $subject = $host;
  3. $pattern = '/^.free.fr/';
  4. echo preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
  5. }


Si je met "truc.free.fr" en pattern ça retourne bien 1, mais je ne trouve pas moyen de faire retourner 1 pour "touslestrucs.free.fr".
Le '/^.free.fr/' ne fonctionne pas, et les caractères "*" et "?" ne semble pas utilisables.
 
Une idée ?

n°1835381
FlorentG
Unité de Masse
Posté le 07-01-2009 à 23:18:50  profilanswer
 

Attention avec ^, ça veut dire qu'il faut que ça commence par ce qui suit. Et le point veut dire « n'importe quel caractère, » donc faut l'escaper par \.
 
Utilise une pattern du genre :

/.+\.(free|wanadoo)\.fr$/


Et en cadeau bonus, dans $matches[1], t'aura soit free, soit wanadoo

n°1835386
themen
A votre service, Mam'zelle
Posté le 07-01-2009 à 23:36:06  profilanswer
 

Merci beaucoup pour ton aide :)
 
Je n'ai pas utilisé le | par contre, j'ai fait ceci (pour pouvoir gérer une grande liste) :
 

Code :
  1. $patterns = array();
  2. $patterns[]= "/.+\.(free)\.fr$/";
  3. $patterns[]= "/.+\.(wanadoo)\.fr$/";
  4. foreach($patterns as $pattern)
  5. if(preg_grep($pattern, $subject))
  6. [...]


 
Encore merci :)
 
PS : aurais-tu un guide sur les expressions "/.+\$#" et tout ce bazar ?

n°1835414
FlorentG
Unité de Masse
Posté le 08-01-2009 à 08:34:48  profilanswer
 

Hmmm, là on risque d'avoir un problème de perfs si la liste est très longue [:sadnoir]

n°1835447
themen
A votre service, Mam'zelle
Posté le 08-01-2009 à 10:33:38  profilanswer
 

Pas faux ^^
 
J'ai corrigé :]
 
Merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petit script php complexe pour moi

 

Sujets relatifs
script php urgentAttendre le retour de Google Maps API avant de continuer le script
URL d'une page appelant un scriptVlinks - Nouveau script annuaire (PHP/Mysql)
[SCRIPT] recuperer les logs d ouverture de sessionScript enregistrement webcam
Problème avec condition dans script batchpetit probleme avec un script css
[SQL] Requete Group By en prenant les infos du plus petit 
Plus de sujets relatifs à : Petit script php complexe pour moi


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR