////////////////////////////////////////////////// ////////////RECUP DES DONNEES//////////////////// ///////////////////////////////////////////////// //on utilise la fonction formate_pour_rtf pour éviter les souci de guillemet //et pour reconvertir les caracteres courament utilisé dans le format rtf //le titre $titre=formate_pour_rtf("#TITRE"); //le titre complet $auteur = formate_pour_rtf("#NOM"); $surtitre = formate_pour_rtf("#SURTITRE"); $date = formate_pour_rtf("[(#DATE|affdate)]"); $texte = formate_pour_rtf('[(#TEXTE|texte_script)]'); $chapo = formate_pour_rtf('[(#CHAPO|texte_script)]'); if(trim($chapo)==""){ $chapo = formate_pour_rtf('[(#DESCRIPTIF|texte_script)]'); } $ps = formate_pour_rtf('[(#PS|texte_script)]'); //on va créer le fichier rtf sur la base du numero d'article $fichier="article.rtf"; $fp=fopen($fichier,"w"); //puis on va écrire le document rtf assez brutalement fwrite($fp, "{\\rtf1\ansi\deff1\adeflang1025 {\fonttbl{\f0\froman\fprq2\fcharset0 Nimbus Roman No9 L;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Times New Roman;}{\f4\fnil\fprq0\fcharset0 Lucidasans;}} {\colortbl;\\red0\green0\blue0;\\red255\green255\blue0;\\red179\green179\blue179;\\red128\green128\blue128;} {\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\snext1 Standard;} {\s2\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon1\snext2 Corps de texte;} {\s3\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af4\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon2\snext3 Liste;} {\s4\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af4\afs20\lang1033\ai\ltrch\dbch\af1\afs20\langfe1033\ai\loch\f1\fs20\lang1033\i\sbasedon1\snext4 L\'e9gende;} {\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af4\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon1\snext5 R\'e9pertoire;} {\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\afs20\langfe1033\loch\f1\fs20\lang1036\sbasedon1\snext6 Normal;} {\s7\sb240\sa60\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af2\afs18\lang1033\ai\ab\ltrch\dbch\af2\afs18\langfe1033\ai\ab\loch\f2\fs18\lang1033\i\b\sbasedon6\snext6 heading 9;} {\s8\sa200\cf0\sl-260\slmult0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext8 Corps de texte - Contemporain;} {\s9\sa200\cf0\sl-260\slmult0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ai\ltrch\dbch\af1\afs24\langfe1033\ai\loch\f1\fs24\lang1033\i\sbasedon6\snext10 R\'e9dacteur - Contemporain;} {\s10\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext10 Body Text;} {\s11\sa160\cf0\sl440\slmult0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs40\lang1033\ltrch\dbch\af1\afs40\langfe1033\loch\f1\fs40\lang1033\sbasedon6\snext9 Titre 1 - Contemporain;} {\s12\keepn\cf0\sl260\slmult0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af2\afs18\lang1033\ab\ltrch\dbch\af2\afs18\langfe1033\ab\loch\f2\fs18\lang1033\b\sbasedon6\snext8 Titre 2 - Contemporain;} {\s13\sa120\keepn\cf0\sl440\slmult0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\afs32\lang1033\ltrch\dbch\afs32\langfe1033\loch\fs32\lang1033\sbasedon7\snext6{\*\soutlvl8} Encadr\'e9 (En-t\'eate) - Contemporain;} {\s14\sa120\cf0\sl-280\slmult0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af2\afs18\lang1033\ltrch\dbch\af2\afs18\langfe1033\loch\f2\fs18\lang1033\sbasedon6\snext14 Encadr\'e9 (Texte) - Contemporain;} {\s15\cf0\\tqc\\tx4536\\tqr\\tx9072{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext15 header;} {\s16\cf0\\tqc\\tx4536\\tqr\\tx9072{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext16 footer;} {\s17\cf0\\tqc\\tx4818\\tqr\\tx9637{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon1\snext17 Pied de page;} {\*\cs19\cf0\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon20 Default Paragraph Font;} {\*\cs20\cf0\\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\afs20\langfe1033\loch\f1\fs20\lang1036 Normal;} {\*\cs21\cf0\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon19 page number;} } {\info{\creatim\yr2003\mo4\dy9\hr7\min2}{\\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6450}}\deftab708 {\*\pgdsctbl {\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1417\margrsxn1417\margtsxn1417\margbsxn709\footery0{\*\footeryt425\footerxl0\footerxr0\footeryh708}{\footer \pard\plain \s16\cf0\\tqc\\tx4536\\tqr\\tx9072{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs20\lang1036\i0\b0 Page {\field{\*\fldinst \\page\\* ARABIC}{\fldrslt 1}} sur 1} \par } \pgdscnxt0 Standard;}} {\*\pgdscno0}\paperh16838\paperw11906\margl1417\margr1417\margt1417\margb709\sectd\sbknone\pgwsxn11906\pghsxn16838\marglsxn1417\margrsxn1417\margtsxn1417\margbsxn1417\footery709{\footer \pard\plain \s16\cf0\\tqc\\tx4536\\tqr\\tx9072{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs20\lang1036\i0\b0 Page {\field{\*\fldinst \\page\\* ARABIC}{\fldrslt 1}} sur 1} \par } \ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \ltrpar\s11\cf0\sl440\slmult0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa160\\rtlch\af1\afs40\lang1033\ltrch\dbch\af1\afs40\langfe1033\loch\f1\fs40\lang1033{\loch\f2\fs60\lang1036\i0\b0\f2{\fs60 $titre }}{\loch\f2\fs40\lang1036\f2\f2\f2{\b\fs28 $date}{\fs60 }} \par \pard\plain \ltrpar\s11\cf0\sl440\slmult0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa160\\rtlch\af1\afs40\lang1033\ltrch\dbch\af1\afs40\langfe1033\loch\f1\fs40\lang1033 {\loch\f1\fs40\lang1036\i0\b0 $surtitre} \par \pard\plain \ltrpar\s9\cf0\sl-260\slmult0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa200\\rtlch\af1\afs24\lang1033\ai\ltrch\dbch\af1\afs24\langfe1033\ai\loch\f1\fs24\lang1033\i {\loch\f1\fs20\lang1036\i\b0 $auteur} \par \pard\plain \ltrpar\s10\cf0\chcbpat3{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs20\lang1036\i0\b0 $chapo} \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs20\lang1036\i0\b0 $texte} \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 \par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa120\\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs20\lang1036\i0\b $ps} \par } "); fclose($fp); header("Location: $fichier "); function formate_pour_rtf($texte){ global $racine; //les caracteres accentué comme les entité html corrrespondante //doivent etre reconvertie $motif=array( "é", "&ecute;", "&ecute", "è", "è", "è", "ê", "ê", "ê", "à", "à", "à", "â", "â", "â", "î", "î", "î", "ô", "ô", "ô", "ù", "ù", "ù", "&", "&", //& doit etre reconverti en & "<", "<", //< doit etre reconverti en < ">", ">", //> doit etre reconverti en > "«", "«", //le guillmet ouvrant doit etre reconverti en guillemet simple "»", "»", //le guillmet fermant doit etre reconverti en guillemet simple """, """, //le guillmet SIMPLE doit etre reconverti en guillemet simple "{", "}", //devient \{ et \} "’", " " ); $remplacement=array( "\\'e9", "\\'e9", "\\'e9", //é "\\'e8", "\\'e8", "\\'e8", //è "\\'ea", "\\'ea", "\\'ea", //ê "\\'e0", "\\'e0", "\\'e0", //à "\\'e2", "\\'e2", "\\'e2", //â "\\'ee", "\\'ee", "\\'ee", //î "\\'f4", "\\'f4", "\\'f4", //ô "\\'f9", "\\'f9", "\\'f9", //ù "&", "&", "<", "<", ">", ">", "\"", "\"", "\"", "\"", "\"", "\"", "\\{", "\\}", "'", " " ); $texte=str_replace($motif,$remplacement,$texte); //Il faut maintenant reconvertir tous les
et
en passage à la ligne $br=array("
","
","
","
","
","
"); $br_replace=array("\n\\par\n","\n\\par\n","\n\\par\n","\n\\par\n","\n\\par\n","\n\\par\n"); $texte=str_replace($br,$br_replace,$texte); //et changer les images $liste_image=liste_balise("img",$texte); for($i=0;$iexemple $texte= "<img src='uyuy'> blala <div align=center> iuiu <img src='hoho'> "; print_r(liste_balise("img",$texte)); //affiche Array([0]=><img src='uyuy'>,[1]=><img src='hoho'>) */ function liste_balise($balise,$texte){ //initilisation on cherche la premiere occurence de <$balise //pour ne pas gérer les problemes de casse je vais to mettre en minuscule $texte_originale=$texte; $balise=strtolower($balise); $texte=strtolower($texte); $debut_recherche=0; $compteur=0; $resultat=array(); $recherche="<".$balise; do{ $pos_debut=strpos($texte,$recherche,$debut_recherche); if($pos_debut===FALSE){//on a rien trouvé return $resultat; }else{ $pos_fin=strpos($texte,">",$pos_debut+1); if ($pos_fin===FALSE){//la balise n'est pas refermée on renvoie 0 return $resultat; }else{ $resultat[$compteur]=substr($texte_originale,$pos_debut,$pos_fin-$pos_debut+1); $compteur++; $debut_recherche=$pos_fin; } } }while ($pos_debut!=FALSE); return $resultat; } /** * @return String * @param String $attr * @param String $balise * @desc renvoie la valeur de l'attribut */ function attribut($attr,$balise){ //initilisation on cherche la premiere occurence de $attr=" //pour ne pas gérer les problemes de casse je vais to mettre en minuscule $balise_originale=$balise; $balise=strtolower($balise); $attr=strtolower($attr); $resultat=""; //on a deux cas de figure soit l'attribut commence avec un guillemet simple //soit avec un guillemet double $recherche1=$attr."=\""; $recherche2=$attr."='"; $pos_debut=strpos($balise,$recherche1); if ($pos_debut===FALSE){ $pos_debut=strpos($balise,$recherche2); if (pos_debut===FALSE){ return $resultat; } $pos_fin=strpos($balise,"'",$pos_debut+strlen($recherche2)); $resultat=substr($balise_originale,$pos_debut+strlen($recherche2),$pos_fin-($pos_debut+strlen($recherche2))); return $resultat; }else{ $pos_fin=strpos($balise,"\"",$pos_debut+strlen($recherche1)); $resultat=substr($balise_originale,$pos_debut+strlen($recherche1),$pos_fin-($pos_debut+strlen($recherche1))); return $resultat; } } /** * @return String * @param String $texte * @desc Vire toutes les balises */ function nettoie_balise($texte){ do{ $start=strpos($texte,"<"); if($start!==FALSE){ $fin=strpos($texte,">",$start+1); if($fin!==FALSE){ $texte=substr_replace($texte,"",$start,$fin-$start+1); } } }while($start!==FALSE); return $texte; } ?>