[PHP] Recupérer nième champ d'une chaine
Fermé
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
-
18 avril 2008 à 10:14
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 18 avril 2008 à 15:07
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 18 avril 2008 à 15:07
A voir également:
- [PHP] Recupérer nième champ d'une chaine
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Chaine tnt gratuite sur mobile - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
12 réponses
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 11:29
18 avril 2008 à 11:29
Hum je suis pas spécialiste mais je t'aiderai dans la mesure de mes (petits) moyen. En utilisant un explode tu peux stocker ta chaine dans un tableau en coupant à chaque point, ensuite tu concaténe uniquement les 6 derniers champs du tableau. Je sais pas si ça sera très claire pour toi^^'.
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 13:08
18 avril 2008 à 13:08
Ou se situe les 6 caractères dans le deuxième tableau?
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
4
18 avril 2008 à 13:19
18 avril 2008 à 13:19
Enfait voila 4 tableau a mettre en relation
j'entre une addresse mac que je retrouve dans le premier tableau, la je capture les 6 dernier "champs" :
[17.4.3.1.1.0.8.116.52.141.38] => Hex: 00 08 XX XX XX XX
Je recherche ces champs dans le 2e tableau :
[17.4.3.1.2.0.8.116.52.141.38] => 14
Puis grace a l'index 14 , je trouve la ligne :
[17.1.4.1.2.14] => 14
De meme :
[ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14] => Fa0/14
Donc voila, si il ya une methode pour adapté un simple :
$result= $array2[$value];
pour ne rechercher que dans la derniere partie de la chaine j'aurais alors achevé une grande partie de mon projet.
merci bien
j'entre une addresse mac que je retrouve dans le premier tableau, la je capture les 6 dernier "champs" :
[17.4.3.1.1.0.8.116.52.141.38] => Hex: 00 08 XX XX XX XX
Je recherche ces champs dans le 2e tableau :
[17.4.3.1.2.0.8.116.52.141.38] => 14
Puis grace a l'index 14 , je trouve la ligne :
[17.1.4.1.2.14] => 14
De meme :
[ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14] => Fa0/14
Donc voila, si il ya une methode pour adapté un simple :
$result= $array2[$value];
pour ne rechercher que dans la derniere partie de la chaine j'aurais alors achevé une grande partie de mon projet.
merci bien
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 13:21
18 avril 2008 à 13:21
Ben au lieu de concaténer, teste les derniers champs avec les derniers champs etc etc... Etant donné que la fin est la même ça devrait être simple. En gros 1 seul array pour chaque tableau, et tu test chaque champs un à un en partant de la fin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 13:28
18 avril 2008 à 13:28
Et je ne comprend pas comment tu obtiens le "14" (je suis nul en ce qui concerne adresse mac et tout ça).
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
4
18 avril 2008 à 13:34
18 avril 2008 à 13:34
en fait,
j'explore les MIB des routeurs... c'est des tables contenant des tas d'info sur le routeur.
ici j'ai pris un exemple précis pour une adresse mac et je l'ai suivi du 1e jusqu'au dernier tableau.
1 - numero de MIB correspondant a l'adresse MAC
2 - Mib donnant index du bridge
3 - Passe de l'index au numero de Bridge
4 - Numero de bridge sert a localiser le port.
ça c'est les conclusion que j'ai tiré en parcourant les tableaux ... donc en cherchant le résultat donné par un tableau a la fin des données dans le suivant voila le tour est joué !
mais comment faire pour comparer la valeur que j'ai en variable avec les 15 derniers caracteres par exemple du tableau suivant ...
c'est just cette commande qu'il me manque.
avec :
$result= $array2[$value];
j'ai la valeur correspondant a $value dans le tableau 2, mais si je veut la valeur qui se termine par $value ???
j'espere que je me suis bien expliqué ;-)
merci
j'explore les MIB des routeurs... c'est des tables contenant des tas d'info sur le routeur.
ici j'ai pris un exemple précis pour une adresse mac et je l'ai suivi du 1e jusqu'au dernier tableau.
1 - numero de MIB correspondant a l'adresse MAC
2 - Mib donnant index du bridge
3 - Passe de l'index au numero de Bridge
4 - Numero de bridge sert a localiser le port.
ça c'est les conclusion que j'ai tiré en parcourant les tableaux ... donc en cherchant le résultat donné par un tableau a la fin des données dans le suivant voila le tour est joué !
mais comment faire pour comparer la valeur que j'ai en variable avec les 15 derniers caracteres par exemple du tableau suivant ...
c'est just cette commande qu'il me manque.
avec :
$result= $array2[$value];
j'ai la valeur correspondant a $value dans le tableau 2, mais si je veut la valeur qui se termine par $value ???
j'espere que je me suis bien expliqué ;-)
merci
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 13:39
18 avril 2008 à 13:39
La valeur qui se termine par la place dans le tableau? Je comprend pas... (je comprend vite mais faut m'expliquer longtemps)^^'
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
4
18 avril 2008 à 13:47
18 avril 2008 à 13:47
ok lol ...
Reprenons le 1e exemple ,
[17.4.3.1.1.0.8.116.52.141.38] => Hex: 00 08 XX XX XX XX
[17.4.3.1.2.0.8.116.52.141.38] => 14
uniquement les 2 premiers car pour l'instant je suis bloqué la, puis une fois ce probleme résolu la suite va s'enchainé.
Donc j'entre une Adresse mac : 00 08 XX XX XX XX
Je traite sa valeur ( jy rajoute" Hex :" car c'est comme cela qu'elle est nommé dans le routeur )
Je recherche l'identifiant qui a pour valeur cette adresse ( ça je sais faire ) , jobtien :
17.4.3.1.1.0.8.116.52.141.38
Ceci va me servir a rechercher dans le tableau suivant, car les identifiant sont PRESQUE les memes :
Je conserve uniquement les 6 derniers champs :
0.8.116.52.141.38
Voila ...
ici on va dire $value = '0.8.116.52.141.38'
Maintenant je souhaite rechercher dans le 2e tableau les lignes contenant(ou se finissant par) $value
Si je peut limiter ma recherche a 'n' champs en aprtant de la fin c'est parfait je pourrait répété la commande pour la suite .
Compris? lol
Reprenons le 1e exemple ,
[17.4.3.1.1.0.8.116.52.141.38] => Hex: 00 08 XX XX XX XX
[17.4.3.1.2.0.8.116.52.141.38] => 14
uniquement les 2 premiers car pour l'instant je suis bloqué la, puis une fois ce probleme résolu la suite va s'enchainé.
Donc j'entre une Adresse mac : 00 08 XX XX XX XX
Je traite sa valeur ( jy rajoute" Hex :" car c'est comme cela qu'elle est nommé dans le routeur )
Je recherche l'identifiant qui a pour valeur cette adresse ( ça je sais faire ) , jobtien :
17.4.3.1.1.0.8.116.52.141.38
Ceci va me servir a rechercher dans le tableau suivant, car les identifiant sont PRESQUE les memes :
Je conserve uniquement les 6 derniers champs :
0.8.116.52.141.38
Voila ...
ici on va dire $value = '0.8.116.52.141.38'
Maintenant je souhaite rechercher dans le 2e tableau les lignes contenant(ou se finissant par) $value
Si je peut limiter ma recherche a 'n' champs en aprtant de la fin c'est parfait je pourrait répété la commande pour la suite .
Compris? lol
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 14:11
18 avril 2008 à 14:11
Une recherche sur 'n' champ en partant de la fin?
Fais un explode sur tes deux identifiants à comparer
Fais un explode sur tes deux identifiants à comparer
//fais donc une boucle $nbtest=6; $cmpt=0; if($nbtest=!$cmpt) { //tu fais tes tests champs par champs en commençant par la fin ton test; $cmpt++ }
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
4
18 avril 2008 à 14:17
18 avril 2008 à 14:17
En fait je crois on se compren mal :
exemple j'ai un array :
ds2f13ABC => blabla
xsdezBBA => blabla2
aaezezaABBC => blabla3
quel commande permet d'obtenir "blabla" en sachant uniquement que la clé se finit par ABC ?
exemple j'ai un array :
ds2f13ABC => blabla
xsdezBBA => blabla2
aaezezaABBC => blabla3
quel commande permet d'obtenir "blabla" en sachant uniquement que la clé se finit par ABC ?
Devilish
Messages postés
1425
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 janvier 2009
38
18 avril 2008 à 14:58
18 avril 2008 à 14:58
L'ordre de la clé est elle importante? Ou on peut avoir ACB ABC CAB BAC BDAC?
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
4
18 avril 2008 à 15:07
18 avril 2008 à 15:07
non c'est important ...
sinon j'ai pensé a sa :
foreach($array2 as $cle => $element)
{
$ary_orig = explode('.', $cle); //parcours les clés
$ary_dest = array_slice($ary_orig, -6); //garde les 6 derniers groupes séparés par des points
$new_result2 = join('.', $ary_dest);
//a partir de la c'est nimporte quoi
$result_bridge = $array2[$new_result2];
echo $result_bridge ;
}
lool ... en fait je réduit la clé du tableau au 6 derniers champs et je recherche dans ce nouveau tableau mais sa ne marche pas !
sinon j'ai pensé a sa :
foreach($array2 as $cle => $element)
{
$ary_orig = explode('.', $cle); //parcours les clés
$ary_dest = array_slice($ary_orig, -6); //garde les 6 derniers groupes séparés par des points
$new_result2 = join('.', $ary_dest);
//a partir de la c'est nimporte quoi
$result_bridge = $array2[$new_result2];
echo $result_bridge ;
}
lool ... en fait je réduit la clé du tableau au 6 derniers champs et je recherche dans ce nouveau tableau mais sa ne marche pas !
18 avril 2008 à 12:58
//recherche dans le tableau 1
$result = array_search($hex, $array1);
//On garde les 6 derniers champs
$ary_orig = explode('.', $result);
$ary_dest = array_slice($ary_orig, -6);
$str_dest = join('.', $ary_dest);
=> sa me donne les 6 derniers champs :-)
maintenant pour rechercher cette chaine dans le deuxieme tableau ?
je sais que pour préciser la fin d'une chaine c'est '$' mais si je recherche '$bridge$' (se finissant par la variabble bridge cela ne veut pas marché. En recherchant directement de cette maniere cela m'éviterait d'avoir a remplacer le début de la chaine qui change selon les pc et donc éviter les errreurs.
en fait le but de la manip c'est de récupérer le port d'un switch depuis l'adresse mac d'un pc.
on a 4 array de type :
[17.4.3.1.1.0.8.116.52.141.38] => Hex: 00 08 XX XX XX XX
[17.4.3.1.2.0.8.116.52.141.38] => 14
[17.1.4.1.2.14] => 14
[ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14] => Fa0/14
On part de l'adresse Mac pour arrivé a Fa0/xx ...
une fois que j'ai extrait la fin de la premiere ligne je dois le chercher dans le 2e tableau pour avoir l'index 14 que je rechercherait a la fin du 3e tableau etc ...
voila j'espere que c'est plus clair