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 :

supprimer des guillemets dans des segments precis


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut supprimer des guillemets dans des segments precis
    Bonjour,
    J'ai un fichier XML dans lequel il y a, entre autres, des elements de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <SEGMENTREF ID="684135" SMARTNAME="opopop" STATUS="C" REPETITION="1" DESCRIPTION="bout de "description" et "op " XMLCOMMENT="" TAG="CAR" />
    Bien sur il est assez problematique de manipuler un fichier pareil puisqu'il y a des guillemets partout. Pour ce que j'en ai vu, le cas se presente dans les balises SEGMENTREF, entre 'DESCRIPTION="' et '" XMLCOMMENT'

    J'ai donc essaye de lire les lignes du fichier une par une pour 'a chaque fois, s'il y a bien ces deux termes, modifier la chaine de caractere comprise entre eux.
    Pour la modifier, je choisis la valeur du debut du segment que je veux modifier, et sa longueur. Puis j'utilise str_replace pour modifier ce segment, et substr_replace, enfin, pour remplacer le segment initial par le segment modifie.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	$file="newStruct.xml"; 
    	$fichier = fopen($file,'r');
    	if ($fichier)
    	{
    		while (!feof($fichier))				 //Tant que l'on est pas à la fin du fichier*
    		{
    			$buffer = fgets($fichier);       //On lit la ligne courante
    			if (strpbrk ($buffer, 'DESCRIPTION="') AND strpbrk ( $buffer , '"; XMLCOMMENT'))    //si la ligne contient bien les elements (&quot ne fonctionne pas non plus)
    				{
    					echo "opopop"; 										// etrange, j'ai beaucoup trop de opopop
    					$pos1=strpos ($buffer, 'DESCRIPTION="')+17; 		//pour le debut du segment 'a modifier
    					$pos2=strpos ($buffer, '" XMLCOMMENT'-4);       	//fin du segment 'a modifier
    					$length=$pos2-$pos1;
    					$segmentInitial=substr($buffer, $pos1, $length);					//on a le segment 'a modifier
    					$segmentFinal=str_replace('"', ' ', $segmentInitial);				//remplace les guillemets par rien
    					$buffer=substr_replace($buffer, $segmentFinal, $pos1, $length);     //remplace le segment initial par le segment final
    				}
    		}
    		echo $buffer;
    		fclose($fichier);  //On ferme le fichier
    	}
    Je ne connais pas grand chose 'a PHP 'a la base (en fait rien avant ce matin, si on peut dire, mais j'ai quand meme pas mal cherche), donc je m'excuse par avance si c'est une faute debile...
    Merci d'avance!

  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
    qui créer le fichier XMl a la base ?

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut
    ce n'est pas moi et honnêtement je n'en sais rien. c'est un fichier dans lequel je dois récupérer des infos avec xslt, il faut d'abord que je rende le fichier bien formé

  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 getrude Voir le message
    ce n'est pas moi et honnêtement je n'en sais rien. c'est un fichier dans lequel je dois récupérer des infos avec xslt, il faut d'abord que je rende le fichier bien formé
    c'est plutôt a celui qui créer le XML de réglé le problème

    utilise DOMDocument il sera plus souple

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut
    oui mais je n'ai aucun moyen de savoir qui l'a fait, et de toute façon je dois m'en servir.

    Imaginons que ce soit un fichier texte et pas XML si vous voulez... est ce que quelqu'un aurait une suggestion concernant la source de mon erreur?

  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 getrude Voir le message
    oui mais je n'ai aucun moyen de savoir qui l'a fait, et de toute façon je dois m'en servir.
    tu le récupères bien quelque par ...

    Citation Envoyé par getrude Voir le message
    Imaginons que ce soit un fichier texte et pas XML si vous voulez... est ce que quelqu'un aurait une suggestion concernant la source de mon erreur?
    je t'ai dis d'utiliser DOmDocument

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut
    Oui, je l'ai eu dans un dossier qui n'a pas été touche depuis fort longtemps, et c'est le fichier qui donne les informations des balises.

    J'ai déjà fait tout le travail en xslt et je ne pense pas qu'il soit si complique de faire ce que j'aimerais faire avec les fonctions PHP. Je ne veux pas paraître trop bornée mais je ne pense pas etre loin du but, j'aimerais continuer dans cette voie

  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
    mais si ton XMl est dans un dossier corrige le ...
    et DomDocument fait parti de PHP ...

  9. #9
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut
    le fichier fait 30 000 lignes, et j'en ai plusieurs de ce type...

    tu pensais 'a DOM pour faire ce que je veux faire en PHP (modifier cette balise en particulier), ou pour carrement remplacer le xslt?

    En fait je ne connais pas du tout DOM et ca m'embeterait de passer 1 journee 'a essayer de m'impregner de la librairie pour si peu. mais est ce que ca rendrait mon document "bien forme"? pour utiliser DOM, il faut deja que le document soit bien en XML, non?

  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
    PHP contient plein de lib pour lire le XML, je vois pas pourquoi tu fais ça a la mano, c'est contre productif

    http://php.net/manual/fr/refs.xml.php

  11. #11
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 65
    Points
    65
    Par défaut
    parce que j'imagine que ça lit le XML quand il est bien forme. j'ai un détail idiot qui m’empêche de le lire, donc je veux simplement bien le former pour le lire ensuite

  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 getrude Voir le message
    parce que j'imagine que ça lit le XML quand il est bien forme. j'ai un détail idiot qui m’empêche de le lire, donc je veux simplement bien le former pour le lire ensuite
    Je te le redi pour la 4eme fois : utilise DomDocument
    bien formé ou pas il corrigera les erreurs

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

Discussions similaires

  1. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  2. Réponses: 5
    Dernier message: 02/04/2007, 14h46
  3. Réponses: 6
    Dernier message: 09/11/2006, 14h19
  4. [VBA-E]Inserer des guillemets dans un string
    Par repié dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/02/2006, 10h47
  5. Réponses: 2
    Dernier message: 08/12/2005, 09h58

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