IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tableaux de correspondance str_replace [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut Tableaux de correspondance str_replace
    Bonjour,
    je rencontre un soucis sur un tableau de correspondance.
    Je récupère un certain nombre d'id dans un flux xml.
    Je dois regénérer un nouveau flux avec de nouveaux id en fonction des id du 1er flux.

    Voici ce que j'ai et qui ne fonctionne évidemment pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $id_type  = array('63', '64', '65', '65', '39', '176', '106', '39', '27', '28', '107', '31', '30', '33', '34', '122', '166', '134', '133', '146', '154', '40', '160', '' , '42', '45', '164', '43', '115', '123', '14', '16', '11', '97', '72', '1', '2', '4', '3', '143', '10', '9', '8', '159', 'ADMIN', '102', '103', '92', '98', '99', '100', '101', '161', '179', '116', '75', '165', '171', '170', '172', '178', '51', '139', '52', '54', '137', '136', '167', '57', '58', '59', '140', '61', '173', '68', '110', '84', '76', '157', '120', 'LABO PHOTO', '177', '112', '175', '109', '88', '117', '89', '114', '90', '91', '93', '77', '79', '120', '94', '67', '95', '119');
     
    $sousmenu_id_type  = array('1045', '1045', '1143', '1144', '1048', '1049', '1050', '1060', '1070', '1071', '1061', '1065', '1066', '1072', '1067', '1068', '1064', '1062', '1073', '1075', '1074', '1078', '1082', '1069' , '1077', '1079', '1063', '1076', '1080', '1081', '1091', '1092', '1093', '1094', '1095', '1097', '1165', '1166', '1167', '1168', '1169', '1170', '1171', '1172', '1098', '1099', '1100', '1101', '1102', '1103', '1104', '1105', '1106', '1107', '1108', '1109', '1117', '1176', '1177', '1178', '1175', '1174', '1180', '1186', '1179', '1189', '1182', '1173', '1183', '1181', '1184', '1187', '1188', '1185', '1112', '1120', '1111', '1116', '1137', '1129', '1127', '1113', '1119', '1114', '1121', '1124', '1123', '1134', '1115', '1125', '1122', '1130', '1131', '1128', '1118', '1132', '1110', '1133', '1136');
     
     
    $sousmenu_id  = str_replace ($id_type , $sousmenu_id_type ,$sousmenu_id );
    Je souhaiterais, en fait, que l'index 0 du premier tableau corresponde à l'index 0 du second tableau...Et uniquement à celui-ci.

    Si quelqu'un peut m'éclairer...

    Merci bcp

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    et comment tu fais la différence entre 65 et 65 ? et le 64 dans 1065 ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut
    Ce sont les seuls id temporaires, donc il ne faut pas se préoccuper de cela....

    Le fonctionnement que je souhaite:

    on remplace tab1[0] par tab[0] et ainsi de suite tab1[1] par tab[1]

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par flo73 Voir le message
    Ce sont les seuls id temporaires, donc il ne faut pas se préoccuper de cela....

    Le fonctionnement que je souhaite:

    on remplace tab1[0] par tab[0] et ainsi de suite tab1[1] par tab[1]
    ouai mais ca marche pas comme ca. Il replace chaque correspondance. tu pourrais boucler sur tes tableau et faire un str_replace unique mais ca sera pareil pour les autres valeurs, si tu veux remplacer (par exemple) 65 par 1024, lorsque qu'il va trouver 1065 il va faire 101024

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut
    Oui Merci

    C'est pour cela que j'ai posté .....Afin de trouver une solution pour réaliser le fonctionnement désiré

    Merci

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par flo73 Voir le message
    Oui Merci

    C'est pour cela que j'ai posté .....Afin de trouver une solution pour réaliser le fonctionnement désiré

    Merci
    bon déjà pour manipuler du xml c'est avec SimpleXML
    si tu veux changer tes id, (attribut ou noeud ?), tu peux faire une requete xpath, qui va tous les récupères, a partir de ce moment la vue que tes clefs ne sont pas unique, il va falloir a chaque fois qu'il trouve l'id suprimer la clef correspondante, donc va falloir bien mettre ton tableau dans l'ordre ou les clefs apparaissent

    t'as un mini exemple (mini tableau de correspondance et mini fichier xml) ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut
    C'est bien simpleXml que j'utilise.
    C'est un noeud dans le flux source et un attribut dans le flux final.
    Bref ça n'est pas ça le problème.

    Le soucis c'est que le flux source peux changer à tout moment.

    flux source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <partenaire2010>1</partenaire2010>
    <id_type>1</id_type>
    <type>Hôtel</type>
    <id>1</id>
    <nom>CHALET-HOTEL & LODGE ADRAY TELEBAR</nom>
    <adresse1>Route de la Renarde</adresse1>
    <adresse2></adresse2>
    flux final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <LASTUPDATE>26/10/2010</LASTUPDATE>
    <ARTICLES>
    <ARTICLE priorite="Low" sousmenu_id="1" maj="1">
    <SAISON>
    Toutes
    </SAISON>
    <ADHERENT>1</ADHERENT>
    <TITRE>
    <en/>
    <fr>CHALET-HOTEL AND LODGE ADRAY TELEBAR</fr>
    </TITRE>
    Je récupère l'id du flux source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sousmenu_id = $articles->id_type;
    C'est ici que je dois appliquer mon tab de correspondance:
    dans ce cas 1->1097

    J' écris mon flux final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $xml.='<ARTICLE priorite ="Low" sousmenu_id="'.$sousmenu_id.'" maj="1">

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    donc c'est ok, creer ta table de correspondance avec array_combine et t'ira chercher avec array_search et tu le surprime l'entrer avec unset

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut
    J'ai crée ma tab de correspondance comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_correspondance = array_combine($id_type, $sousmenu_id_type);
    Mais je ne sais pas ensuite comment procéder pour suivre ton raisonnement.......

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par flo73 Voir le message
    J'ai crée ma tab de correspondance comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_correspondance = array_combine($id_type, $sousmenu_id_type);
    Mais je ne sais pas ensuite comment procéder pour suivre ton raisonnement.......
    ducoup non oublie le combine tu peux pas avoir 2 clefs identique dans le tableau

    pour la suite a chaque fois que tu va aller trouver un id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sousmenu_id = $articles->id_type;
    $key = array_search($sousmenu_id, $id_type);
    $new_id = $sousmenu_id_type[$key];
     
    unset($id_type[$key], $sousmenu_id_type[$key]);
     
    $xml.='<ARTICLE priorite ="Low" sousmenu_id="'.$new_id.'" maj="1">

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Points : 43
    Points
    43
    Par défaut
    Ben écoute......Ca a l'air de fonctionner comme je le souhaite.

    Merci pour ton aide!!!

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par flo73 Voir le message
    Ben écoute......Ca a l'air de fonctionner comme je le souhaite.

    Merci pour ton aide!!!
    cool

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Insérer un str_replace
    Par cybernetique dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2008, 21h01
  2. [Tableaux] probleme avec str_replace
    Par cflo91 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2007, 17h02
  3. [Tableaux] problème avec str_replace en boucle
    Par kev2259 dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2007, 17h46
  4. [Tableaux] simplifier fonction str_replace
    Par nicerico dans le forum Langage
    Réponses: 7
    Dernier message: 04/12/2006, 16h45
  5. [Tableaux] Fonction str_replace et les accents
    Par GarGamel55 dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2006, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo