lotus81 | voila ca marche j'ai ecrits deux script php ...
ils sont loin d'être parfait mais je les mets à disposition, en cas ca interresse quelqu'un...
dans ce premier code: il faut obligatoirement qu'il y est une declaration de dtd et qu'elle soit plus longue que la nouvelle declaration...
Code :
- <?php
- function RemplacerDeclarationDtd($fichier,$NewDeclarationDtd)
- {
- if (file_exists("$fichier" ))
- {
- if($id = fopen("$fichier", "r+" ))
- {
- $contenu_original = fread ($id, 20000000);
- $retour="\n";
- $findmeDeb = "<!DOCTYPE";
- $findmeFin = "\">";
- $posDeb=strpos($contenu_original, $findmeDeb);
- $posFin=strpos($contenu_original, $findmeFin);
- $DeclarationDtdAvant=substr($contenu_original,$posDeb,$posFin);
- $TailleAvant=strlen($DeclarationDtdAvant);
- echo "$TailleAvant\n";
- $TailleApres=strlen($NewDeclarationDtd);
- echo "$TailleApres\n";
- $Espace=$TailleAvant-$TailleApres;
- echo "$Espace\n";
- while ($Espace>0)
- {
- $esp=" ".$esp;
- $Espace=$Espace-1;
- }
- $nouveau_contenu= str_replace($DeclarationDtdAvant,$NewDeclarationDtd.$esp,$contenu_original);
- rewind($id);
- fputs ($id, $nouveau_contenu);
- fclose($id);
- return ok;
- }
- else
- {
- return pb_ouv;
- }
- }
- else
- {
- return no_file;
- }
- }
- $pathfichier="MonFichier.xml";
- $NewDeclarationDtd="<!DOCTYPE PubmedArticleSet SYSTEM \"MaDTD.dtd\">";
- RemplacerDeclarationDtd($pathfichier,$NewDeclarationDtd);
- ?>
|
dans le second code je crois que ca marche dans tous les cas...
Code :
- <?php
- function Ajouter_Au_Debut($fichier, $texte)
- {
- if (file_exists("$fichier" ))
- {
- if($id = fopen("$fichier", "r+" ))
- {
- $contenu_original = fread ($id, 20000000);
- $retour="\n";
- $nouveau_contenu=$texte.$retour.$contenu_original;
- rewind($id);
- fputs ($id, $nouveau_contenu);
- fclose($id);
- return ok;
- }
- else
- {
- return pb_ouv;
- }
- }
- else
- {
- return no_file;
- }
- }
- function Supprimer_Le_Debut($fichier,$findme)
- {
- if (file_exists("$fichier" ))
- {
- if($id = fopen("$fichier", "r+" ))
- {
- $contenu_original = fread ($id, 20000000);
- $retour="\n";
- $pos = strpos($contenu_original, $findme);
- $taille=$pos;
- while($taille>0)
- {
- $espace=" ".$espace;
- $taille=$taille-1;
- }
- $new_string = substr($contenu_original,$pos,strlen($contenu_original )).$espace;
- rewind($id);
- fputs ($id, $new_string);
- fclose($id);
- return ok;
- }
- else
- {
- return pb_ouv;
- }
- }
- else
- {
- return no_file;
- }
- }
- $pathfichier="MonFichier.xml";
- $findme = '?>';
- Supprimer_Le_Debut($pathfichier,$findme);
- $findme = '<';
- Supprimer_Le_Debut($pathfichier,$findme);
- $findme = 'DOCTYPE';
- Supprimer_Le_Debut($pathfichier,$findme);
- $findme = '<';
- Supprimer_Le_Debut($pathfichier,$findme);
- $newDTD="\n";
- Ajouter_Au_Debut($pathfichier,$newDTD);
- $newDTD="<!DOCTYPE PubmedArticleSet SYSTEM \"MaDTD.dtd\">";
- Ajouter_Au_Debut($pathfichier,$newDTD);
- $newDTD="\n";
- Ajouter_Au_Debut($pathfichier,$newDTD);
- $newDTD="<?xml version=\"1.0\"?>";
- Ajouter_Au_Debut($pathfichier,$newDTD);
- ?>
|
bye |