Formater une adresse Ip

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formater une adresse Ip

par albat » 08 nov. 2006, 11:46

Ou, dans la même idée:
$ip_tab = explode(".", $ip);
foreach ($ip_tab as $value){  
  $ip_finale .= str_pad($value, 3, '0', STR_PAD_LEFT);
}
str_pad() !!!
C'est la fonction que je voulais, mais je ne retrouvais pas son nom !
@$¤%# d'Alzheimer...
Tu peux mettre "résolu" si tu en as le pouvoir, car je ne suis pas inscrit.
J'ai le pouvoir de mettre "Résolu",
mais toi seul as le pouvoir de t'enregistrer sur le forum. ;)
Ce qui, en plus, te donnera aussitôt, le pouvoir de mettre "Résolu"... :pouce:

par Aurélien Le Cointre » 08 nov. 2006, 11:40

Merci, Albat.

J'éprouve quelques difficultés à conceptualiser les boucles !

Tu peux mettre "résolu" si tu en as le pouvoir, car je ne suis pas inscrit.

Bonne journée,

Aurélien

par Ripat » 08 nov. 2006, 11:40

Ou, dans la même idée:
$ip_tab = explode(".", $ip);
foreach ($ip_tab as $value){  
  $ip_finale .= str_pad($value, 3, '0', STR_PAD_LEFT);
}

par albat » 08 nov. 2006, 11:26

Même sans regexp, je pense qu'il y avait beaucoup plus simple :
$ip        = "127.0.0.1";
$ip_finale = "";

$ip_tab = explode(".", $ip);
foreach ($ip_tab as $value) 
        { while (strlen($value)<3)
                { $value = "0".$value ;
                }
          $ip_finale .= $value;
        }
echo $ip_finale ;
;)

par Aurélien Le Cointre » 08 nov. 2006, 10:26

Bonjour,

Après l'indication d'Albat, j'ai essayé de travailler à partir d'une expression régulière.

J'ai obtenu ce code :
$ip = '127.0.0.1';
preg_match_all('#(\d{1,3})(?:.)(\d{1,3})(?:.)(\d{1,3})(?:.)(\d{1,3})#', $ip, $sortie, PREG_SET_ORDER);
if (strlen($sortie[0][1]) == 1)
$sortie[0][1] = '00'.$sortie[0][1];
if (strlen($sortie[0][1]) == 2)
$sortie[0][1] = '0'.$sortie[0][1];
if (strlen($sortie[0][2]) == 1)
$sortie[0][2] = '00'.$sortie[0][2];
if (strlen($sortie[0][2]) == 2)
$sortie[0][2] = '0'.$sortie[0][2];
if (strlen($sortie[0][3]) == 1)
$sortie[0][3] = '00'.$sortie[0][3];
if (strlen($sortie[0][3]) == 2)
$sortie[0][3] = '0'.$sortie[0][3];
if (strlen($sortie[0][4]) == 1)
$sortie[0][4] = '00'.$sortie[0][4];
if (strlen($sortie[0][4]) == 2)
$sortie[0][4] = '0'.$sortie[0][4];
print $sortie[0][1].$sortie[0][2].$sortie[0][3].$sortie[0][4];
Le résultat me donne satisfaction, mais ne pourrais-je améliorer le code à partir de cette base ?

Merci de votre aide.

Cordialement,

Aurélien

par albat » 07 nov. 2006, 19:50

Le plus élégant sera sans doute d'utiliser les expressions régulières,
mais si tu y es allergique, un explode() pourra faire l'affaire.

Formater une adresse Ip

par Aurélien Le Cointre » 07 nov. 2006, 19:31

Bonjour,

Je voudrais formater une adresse Ip avant de l'insérer dans une table.

Au prélable, je voudrais
1) supprimer les points,
2) ajouter des O (zéro).

Par exemple, mon adresse locale est 127.0.0.1.

Je voudrais l'insérer sous la forme 127000000001.

Dois-je passer par les décourageantes expressions régulières ? :cry:

Ou par un, plus simple mais moins rapide, "explode" ?

Merci de votre aide !

Bien à vous,

Aurélien