Petit script php complexe pour moi

Petit script php complexe pour moi - PHP - Programmation

Marsh Posté le 07-01-2009 à 21:45:55    

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!

Reply

Marsh Posté le 07-01-2009 à 21:45:55   

Reply

Marsh Posté le 07-01-2009 à 22:51:55    

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 ?

Reply

Marsh Posté le 07-01-2009 à 23:18:50    

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

Reply

Marsh Posté le 07-01-2009 à 23:36:06    

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 ?

Reply

Marsh Posté le 08-01-2009 à 08:34:48    

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

Reply

Marsh Posté le 08-01-2009 à 10:33:38    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed