Accueil > Forum > > > > PHP et fichier Word
PHP et fichier Word
jeudi 29 novembre 2007 à 15:54:19 |
PHP et fichier Word

Kirostaz
|
Bonjour à tous, alors je vous présente la situation :
- j'ai un formulaire dans lequel on rentre entre autre un nom de rapport et un nom de fichier qu'on veut créer. Ce fichier ce créer a partir d'un modele ( reminder.rtf ) et remplace dans le modele ce qui doit l'etre pour créer le nouveau fichier :
$nom_fic=str_replace("'"," ",$nom_fic); $nom_fic = addslashes($nom_fic); $nom_work = addslashes($nom_work);
$fp=fopen("reminder.rtf","r"); $new=fopen($nom_fic.".rtf","x+");
while(!feof($fp)) { $Ligne = preg_replace("#service#", $libservice, $Ligne); $Ligne = preg_replace("#nom_chef#", $tri_chef, $Ligne); $Ligne = preg_replace("#nom_assist#", $tri_assist, $Ligne); $Ligne = preg_replace("#DateComite#", $date_comite, $Ligne); $Ligne = preg_replace("#NomProjet#", $nom_work, $Ligne); fputs($new,$Ligne); }
fclose($fp); fclose($new);
Tout ceci fonctionne a merveille. Pourquoi suis-je là alors me direz vous ? A cause de lui : ' Monsieur apostrophe qui me fou tout a l'air. Si j'ai un apopstrophe dans $nom_work, par ex si le chmaps est égal à " l'apostrophe " dans mon word il va m'écrire : " l ostrophe "
Et ça ... c'est problématique.
Quelqu'un a une idée? :(
|
|
jeudi 29 novembre 2007 à 18:14:38 |
Re : PHP et fichier Word

neigedhiver
|
Salut,
Tout d'abord, optimisation :
$fp=fopen("reminder.rtf","r");
$new=fopen($nom_fic.".rtf","x+");
while(!feof($fp)) {
$Ligne = preg_replace("#service#", $libservice, $Ligne);
$Ligne = preg_replace("#nom_chef#", $tri_chef, $Ligne);
$Ligne = preg_replace("#nom_assist#", $tri_assist, $Ligne);
$Ligne = preg_replace("#DateComite#", $date_comite, $Ligne);
$Ligne = preg_replace("#NomProjet#", $nom_work, $Ligne);
fputs($new,$Ligne);
}
fclose($fp);
fclose($new);
C'est beurk pour faire ce que tu fais. Deux choses à optimiser : l'ouverture et la récupération du contenu du fichier, d'une part, et le remplacement d'autre part.
$ancien = file_get_contents('reminder.rtf');
$remplacer = array('#service#', '#nom_chef#', '#nom_assist#', '#DateComite#', '#NomProjet#');
$remplacement = array($libservice, $tri_chef, $tri_assist, $date_comite, $nom_work);
$nouveau = preg_replace($remplacer, $remplacement, $ancien);
file_put_contents($nom_fic.'.rtf', $nouveau);
Explications :
- file_get_contents() ouvre un fichier, lit son contenu, et le place dans une variable en tant que chaine de caractères
- file_put_contents() fait la même chose mais pour l'écrire.
- preg_replace() accepte des tableaux en arguments. Elle prend chaque élément du tableau de remplacement et le met à la place de l'élément correspondant dans la chaine.
En fait, fopen n'est vraiment intéressant que si on a besoin de faire une manipulation "complexe" d'un fichier. Sinon, autant laisser php gérer ça, il le fait très bien.
Pour ton problème d'apostrophe, à aucun momoent preg_replace n'intervient dessus. Ca ne doit donc pas poser de problème. Si une chaine contient une apostrophe, l'apostrophe doit être écrite. Donc ne fais aucun traitement avant, ça doit passer.
|
|
vendredi 30 novembre 2007 à 10:24:14 |
Re : PHP et fichier Word

Kirostaz
|
En fait ce morceau de code à été fait par mon prédécesseur, donc j'avais pas trop chercher a le modifier du moment ou il fonctionnais. J'ai testé ta version pour voir si mon problème serais reglé, et j'ai eu le droit à
Fatal error: Call to undefined function: file_put_contents() in c:\program files\easyphp1-7\www\workflow\nouveau-new.php on line 299
et ma ligne 299 est : file_put_contents('//atlas/www/WorkFlow/doc/'.$nom_fic.'.rtf', $nouveau);
Probleme de version ?
|
|
vendredi 30 novembre 2007 à 10:37:08 |
Re : PHP et fichier Word

Kirostaz
|
apres verification je suis en 4.3.3 et file_put_contents et dispo à partir de la version 5
|
|
vendredi 30 novembre 2007 à 10:37:09 |
Re : PHP et fichier Word

Kirostaz
|
apres verification je suis en 4.3.3 et file_put_contents et dispo à partir de la version 5
|
|
vendredi 30 novembre 2007 à 12:08:50 |
Re : PHP et fichier Word

neigedhiver
|
Ouaip au temps pour moi, j'avais zappé cette histoire de version de php. Tellement l'habitude d'être en php5...
Pour écrire le nouveau fichier :
au lieu de file_put_contents() :
$fh = fopen($nom_fic.'.rtf', 'w+');
fwrite($fh, $nouveau);
fclose($fh);
Si tu ouvres le fichier avec x+ il faut vérifier le résultat de l'écriture : si le fichier existe déjà, l'écriture échoue.
Avec w+, si le fichier existe déjà, il est écrasé.
Deux comportements différents, mais il faut faire ce qu'il faut pour bien traiter l'écriture dans chaque cas.
|
|
vendredi 30 novembre 2007 à 13:32:02 |
Re : PHP et fichier Word

Kirostaz
|
Mon but étant de ne pas réécrire par dessus un fichier s'il existe déjà je laisse le x+ . Chaque rapport se devant d'etre unique, il ne peux y avoir deux fichiers du meme nom , bien sur une verification est faite avant, mais le w+ me permet une vérification supplémentaire. J'essaye le code de suite, merci
|
|
vendredi 30 novembre 2007 à 13:36:27 |
Re : PHP et fichier Word

Kirostaz
|
Hum, mauvaise nouvelle :
Objet : l ostrophe pas miex :/
|
|
lundi 3 décembre 2007 à 11:13:06 |
Re : PHP et fichier Word
|
lundi 3 décembre 2007 à 13:30:12 |
Re : PHP et fichier Word

neigedhiver
|
A part addslash, je vois pas. Mais comme tu dis que ça fait pareil...
|
|
Cette discussion est classée dans : fichier, ligne, replace, preg, fic
Répondre à ce message
Sujets en rapport avec ce message
preg_replace [ par Tomcube ]
Est-ce que quelqu'un pourrait me modifier cette ligne pour la faire accepter les retours à la ligne (\n), j'ai trop de mal avec les masques ! $text =
Preg_replace et les insertions de retours à la ligne... [ par NaeiKinDus ]
Bonjour tout le monde ! J'aimerais savoir comment faire pour insérer des retours à la ligne via un preg_replace... J'ai une chaine $content, qui serai
Affichage données fichier csv [ par flopad ]
Salut à vous!J'ai le code suivant : A la place d'afficher le fichier, je voudrais seulement afficher la ligne contenant la variable tapée dans le form
preg_replace et les retour à la ligne? [ par Shibo_Sources ]
Bonjour tout le monde, J'ai codé une petite fonction de substitution du bbcode par du html avec preg_replace mais quand il y a un retour à la ligne pr
Question templates [ par astuces_jeux ]
Bonjour,J'ai remarqué que l'utilisation de la class fasttemplate est compliquée. Alors je voulais savoir si on ne pouvait pas faire ça simple : foncti
Problème avec la fonction: Preg_Replace [ par masterofquebec ]
Bonjour,Je cherche a convertir le texte:"yk-15" => "Beaver Creek",enarray("yk-15", "Beaver Creek"),à l'aide de Preg_Replace mais je ne suis pas très h
Planifier des executions automatique [ par quentindu16 ]
Bonjour à tous.J'ai un projet en tête et pour cela j'ai besoin de votre aide.Je voudrais avoir un script ou autre (je m'y connais pas trop) qui permet
Couper/coller ligne par ligne d'un fichier .txt [ par quentindu16 ]
Bonjour, voilà j'ai un petit souci avec le PHP.Le principe est très simple :- J'ai un fichier A, dans lequel 10 mots sont écris (1 mot par ligne, dont
pourquoi sa ne marche pas? [ par zabou31 ]
Salut j'ai un soucis dans ma ligne de l'echo.comment je peux la corriger ? merci d'avance$fichier = file("fichier.txt"); // Nom du fichier à afficher,
PHP - Extraire des chaîne par ligne dans un .txt [ par KolKOR ]
Bonjour,Je suis entrain de réaliser une enquête qualité d'une entreprise. Je demande à des client de remplir un formulaire afin de faire des statistiq
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|