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!