[RESOLU] Faire un calcul sur le dernier chiffre de chaque ligne à partir d'un fget et preg replace

Petit nouveau ! | 3 Messages

07 oct. 2021, 15:10

Bonjour je suis un débutant en PHP et je suis entrain de développer une interface web pour un serveur OpenVPN, mais je bloque sur une chose j'ai fait une page pour afficher les IP mais le problème c'est que dans le fichier ou il y a les IP il n'affiche pas les vrais IP il faut rajouter +2 à chaque fois exemple de ce que j'ai dans mon fichier:
monipvirtuelle1,10.6.0.4
monipvirtuelle2,10.6.0.10
exemple de ce que je souhaite :
monipvirtuelle1,10.6.0.6
monipvirtuelle2,10.6.0.12

Du coup j'ai essayer de faire ça avec un preg replace sans succès j'arrive bien à prendre le dernier chiffre mais je voudrais rajouter +2 à la place de calculer ça me le remplace par 2 si quelqu’un n’aurait une idée s'il vous plaît cela fait plusieurs jours que je bloque sur ça. J'ai donc utiliser le code ci dessous. Bonne journée à vous !

Code : Tout sélectionner

<?php $ippfile = "".$ippconf.""; $ipp = fopen( $ippfile, "r" ); while ( $ippdata = fgets($ipp, 1000) ) { $numberspattern = '/[0-9]+$/'; $numbers = "2"; echo preg_replace($numberspattern, + $numbers, $ippdata); } ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 oct. 2021, 17:56

Bonjour,

Utilises preg_match() pour extraire les 3 premiers et le dernier bloc.
Puis tu reconstitues la nouvelle IP en concaténant les 3 premiers et (le dernier bloc + 2)

2 points de vigilance qui ne sont pas dans ta question mais qu'il faudrait que tu aies en tête "au cas où" :
1) Es-tu sûr que tu n'auras à l'avenir que des IPV4 et jamais d'IPv6 ? Car avec des ipv6 ton script ne va pas marcher
2) C'est très étrange/improbable que ton serveur openVPN te fournisse des IP fausses (décrémentées de 2) donc vérifie bien que tu n'as pas un paramétrage exotique qui provoquerait ce problème à la source.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

07 oct. 2021, 18:02

Bonjour, merci de ton aide je vais voir ça avec preg_match

1)Probablement mais l'ipv6 est désactiver actuellement
2)C'est normal c'est le subnet des IP VPN autrement dit je peut mettre ce que je souhaite comme plage d'IP (si tu préfère c'est les IP privé du réseau VPN)
Quand j'aurais terminer de développer ce site je le partagerai pour les personnes intéressé, c'est pour les serveur OpenVPN utilisant easy-rsa.

Je reviendrais vers vous is j'ai réussi ou pas avec mon histoire de preg. Bonne soirée.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 oct. 2021, 18:29

Pour la regex, un truc du genre devrait matcher les IPv4 en extrayant les 3 premiers blocs et le dernier

Code : Tout sélectionner

`([0-9]+\.[0-9]+\.[0-9]+\.)([0-9]+)`
https://regex101.com/r/0r8AVT/1
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

17 déc. 2021, 16:58

Merci beaucoup de ton aide @rthur j'ai désormais mis en ligne mon site sur github c'est opensource si jamais vous êtes intéressé. Désoler si je reviens plus tard, ce n'était qu'un projet personnelle, mais pas eu trop de temps récemment. Pour les intéressé passer sur le github de Thimoty44. Et merci encore @rthur pour ton aide.