begin process at 2012 05 31 05:38:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

PHP et fichier Word


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Kirostaz

Aucune idée  ? :(  
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...

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales