Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3133 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  aidez moi svp probleme php vers word

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aidez moi svp probleme php vers word

n°2214229
habboub30
Posté le 20-12-2013 à 14:31:14  profilanswer
 

bonsoir a tous, effectivement j'ai un problème avec php:
bon j'ai un fichier .rtf dans lequel j'ai introduit des variable de type [nom] , [prenom] , [age]
j'aime bien générer un fichier dans le quel je remplace les xxxnomxxx, xxxprenomxxx, avec des variable php, bon en français tous ce passe bien
mais lorsque les variable contient des information ecrite en arabe le fichier resultat affiche des ??????
si quelq'un peut m'aider svp c tres urgent   :??:    :??:  
  voici mon fichier php:  
 
<html>
 
 <head>
 <meta http-equiv="Content-Language" content="ar-sa">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
<title>&#1589;&#1601;&#1581;&#1577; &#1580;&#1583;&#1610;&#1583;&#1577; 1</title>
</head>
 
<body>
 
 
<?php
//Chemin vers le fichier RTF
 
/*********************************/
     $filename="fich1.rtf";
if(file_exists($filename)){
//On ouvre le modele
$fp = fopen ($filename, 'r');
$content = fread($fp, filesize($filename));
fclose ($fp);
 
//On remplace les champs automatiques du modèle
$content=str_replace("[nom]",utf8_decode("josef" ),$content);
$content=str_replace("[prenom]",utf8_decode("متمكنتمن" ),$content);
$content=strtr("[age]","25",$content);
 
//On écrit le nouveau document word sur le disque :
 
  $fp = fopen('d:/rapport.doc', 'w');
 
fwrite($fp, $content);
fclose($fp);
}
 
?>
 </body>
 
</html>
 
 

mood
Publicité
Posté le 20-12-2013 à 14:31:14  profilanswer
 

n°2214234
MaybeEijOr​Not
but someone at least
Posté le 20-12-2013 à 15:15:15  profilanswer
 

Ta partie HTML ne change rien, ton fichier est encodé en quoi?

n°2214269
habboub30
Posté le 20-12-2013 à 21:32:23  profilanswer
 

le fichier php est encodé en UTF-8 without BOM, svp y'a t il une solution?

n°2214390
czh
Posté le 24-12-2013 à 11:26:53  profilanswer
 

Lorsque tu utilises des caractères non-ASCII, il faut que tu indiques dans ton fichier RTF le nom d'une police de caractère qui existe dans le word et contient les caractères de la langue que tu souhaites utiliser. Exemple succincte de fichier RTF qui utilise des font : http://fr.wikipedia.org/wiki/Rich_Text_Format. Les caractères unicodes doivent aussi être représenté d'une certaine manière.
 
Le mieux si tu ne veux pas te taper les specs, c'est d'éditer un fichier RTF de mettre des phrases en arabes puis de rouvrir le fichier sous un éditeur de code, pour voir à quoi ça ressemble.

n°2220124
oppenzero
Posté le 18-02-2014 à 23:21:18  profilanswer
 

bsr, je voudrais relancer la discussion car j'ai le meme probleme :
je me suis "inspiré" d'un post pour créer un fichier RTF et réaliser un "publipostage". le document en question contient du français et de l'arabe.
 
je crée le fichier :
$myContent = file_get_contents("scr/modele.rtf" );
 $myContent = str_replace("@option@",$option,$myContent);
.....
ensuite je l'enregistre
$chemin = "impression/".$nomfichier.".rtf";
$newFileHandler = fopen($chemin,"a" );
fwrite($newFileHandler,$myContent);
fclose($newFileHandler);
 
echo "<a href='../impression/".$nomfichier.".rtf'>Telecharger document</a>";
 
le probleme le fichier comporte des symboles au lieu des caractères arabes !!! j'ai testé avec echo php reconnait le texte arabe de même avec mysql(j'ai ajoute l'instruction SET CHARACTER SET utf8)
 
j'ai essayé utf8_encode($option), ini_set($option, 'UTF-8') , htmlentities($option, ENT_QUOTES, "UTF-8" ), utf8_decode($option) rien n'y fait ...toujours des symboles ou des points d’interrogation :(
 
aidez moi SVP.

n°2220130
czh
Posté le 19-02-2014 à 02:06:09  profilanswer
 

Bon, puisque personne ne le fait, j'ai suivi mes propres recommandations.
 
1- J'ai créé un fichier vide RTF avec OpenOffice (parce que je n'ai pas word)
 
2- J'ai écrit les lignes suivantes :

Citation :

Ceci est un test.
AAA.
Ceci est un test.
إن شاء الله
Ceci est un test.


 
3- et puis j'ai sauvegardé et j'ai ouvert mon fichier dans un éditeur de texte/code et j'obtiens ça :
 

Citation :

[Début du fichier]
 
{\rtf1\ansi\deff0\adeflang1025
...
 
pleins de lignes inintéressantes
 
...
 
\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
Ceci est un test.}
\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}
\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af7\afs24\lang1081
\loch\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
AAA.}
\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af5
\langfe2052\dbch\af7\afs24\lang1081\loch\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
Ceci est un test.}
\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af5
\langfe2052\dbch\af7\afs24\lang1081\loch\f0\fs24\lang1036{\dbch\af0\ltrch \rtlch
\u1573\'3f\u1606\'3f \u1588\'3f\u1575\'3f\u1569\'3f \u1575\'3f\u1604\'3f\u1604\'3f\u1607\'3f}

\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af5
\langfe2052\dbch\af7\afs24\lang1081\loch\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
Ceci est un test.}
\par }
 
[Fin du fichier]


 
La partie en gras correspond aux caractères en arabe.
\rtlch c'est pour indiquer que le sens de lecture est en right-to-left.
 
Il ne reste plus qu'à deviner ce qui est nécessaire de ce qui ne l'est pas.
 
Après avoir écrémé successivement le fichier rtf en vérifiant qu'OpenOffice acceptait bien l'ouverture du document, le fichier finit par se résumer à ça :
 

Code :
  1. {\rtf1
  2. \u1573\'3f\u1606\'3f \u1588\'3f\u1575\'3f\u1569\'3f \u1575\'3f\u1604\'3f\u1604\'3f\u1607\'3f}


 
Le lien wikipedia qui marche mieux : http://fr.wikipedia.org/wiki/Rich_Text_Format
Les specs de la version 1.5 pour comprendre comment lire et écrire en format rtf : http://www.biblioscape.com/rtf15_spec.htm


Message édité par czh le 19-02-2014 à 03:01:59
n°2220155
oppenzero
Posté le 19-02-2014 à 11:24:25  profilanswer
 

le document est généré automatiquement; je dois effectuer les modifications à partir de PHP.  
fwrite($newFileHandler,'أبتثجحخ');  
rends le fichier inutilisable de meme lorsque j'ai change la langue du fichier source en arabe  
word me demande le codage et j'ai un fichier illisible comme ceci :
\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
Ceci est un test.}
\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}
\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af7\afs24\lang1081
\loch\f0\fs24\lang1036{\dbch\af0\rtlch \ltrch\loch
AAA.}
 
avez vous une idée?merci.


Message édité par oppenzero le 19-02-2014 à 11:27:29
n°2220198
mechkurt
Posté le 19-02-2014 à 16:01:35  profilanswer
 

La réponse de CZH +  [:alkatraz]  => http://stackoverflow.com/questions [...] -using-php


---------------
D3
n°2220223
oppenzero
Posté le 19-02-2014 à 20:14:40  profilanswer
 

merci pour vos réponses mais le fichier RTF est généré dynamiquement à partir de PHP pour être imprimé par le visiteur

Code :
  1. $myContent = file_get_contents("scr/modele.rtf" );
  2. $myContent = str_replace("@option@",$option,$myContent);
  3. .....
  4. $chemin = "impression/".$nomfichier.".rtf";
  5. $newFileHandler = fopen($chemin,"a" );
  6. fwrite($newFileHandler,$myContent);
  7. fclose($newFileHandler);


donc la manipulation doit se faire au niveau du script PHP et non du fichier généré.....à mon avis le problème c'est soit fwrite soit str_replace car echo ($option) affiche correctement l'arabe
S.O.S svp j'ai tout essayé et j'y arrive pas....s'il faut changer l'extension RTF ou s'il y'a une autre méthode merci de me le signaler


Message édité par oppenzero le 20-02-2014 à 11:58:31
n°2220303
oppenzero
Posté le 20-02-2014 à 14:56:25  profilanswer
 

toujours le même probleme :
- me donne Array a la place du contenu de la variable  :fou:  

Code :
  1. $string = 'a';
  2.     $expanded = iconv('UTF-8', 'UTF-32', $string);
  3.     $arr = unpack('L*', $expanded);
  4.     print_r($arr);


 
 
-ne trouve pas la classe Arabic..erreur fatale  :pt1cable:  

Code :
  1. <?php
  2.     include('Arabic.php');
  3.     $Arabic = new Arabic('ArGlyphs');
  4.     $text = 'بسم الله الرحمن الرحيم';
  5.     $text = $Arabic->utf8Glyphs($text);
  6.     echo $text;
  7.     ?>


 
 
-div { direction:rtl; } ....FWRITE ne l'accepte pas  
 
je suis toujours persuadé que le problème est soit fwrite soit str_replace...de l'aide SVP

mood
Publicité
Posté le 20-02-2014 à 14:56:25  profilanswer
 

n°2220305
mechkurt
Posté le 20-02-2014 à 15:00:24  profilanswer
 

Tu as compris qu'il fallait télécharger le fichier Arabic.php et le placer de façon a ce que ton script puisse l'inclure ?


---------------
D3
n°2220314
oppenzero
Posté le 20-02-2014 à 15:32:51  profilanswer
 

bien sur  

Code :
  1. include ('scr/Arabic.php');


 
ou

Code :
  1. require_once 'scr/Arabic.php';


j'ai pas un message de type Failed opening 'scr/Arabic.php' for inclusion donc mon include fonctionne !
le probleme vient de cette instruction

Code :
  1. $text = $Arabic->utf8Glyphs($text);

et j'ai le message suivant Fatal error: Class 'Arabic' not found in....
 
même en appellant directement la fonction utf8Glyphs du fichier Glyphs.php j'ai le message suivant : Fatal error: Call to undefined function utf8Glyphs() in....


Message édité par oppenzero le 20-02-2014 à 15:58:04
n°2220336
rufo
Pas me confondre avec Lycos!
Posté le 20-02-2014 à 17:21:48  profilanswer
 

T'as pas l'air de comprendre l'anglais toi :/
"Failed opening 'scr/Arabic.php' for inclusion" signifie que l'include a écouhé justement, très probablement du fait que le chemin d'accès que tu spécifies n'est pas bon dans le include ou le require_once.
 
Précision : include() et require() sont très similaires, à la différence que l'include, en cas d'échec, va lever un warning alors que require va lever un fatal error. include_once() et require_once ont la même différence, simple ces 2 fonctions vérifient qu'un même fichier ne soit pas inclus plus d'une fois (ce qui occasionnerait des erreurs de fonctions déclarés plusieurs fois). Ces 2 fonctions sont donc un peu plus lentes que include et require mais rendent l'appli un peu plus "robuste" quand celle-ci grossi pas mal et que tu commence à avoir pas mal d'include et que le contexte d'inclusion peut varier.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2220344
oppenzero
Posté le 20-02-2014 à 18:17:24  profilanswer
 

je comprends pas tres bien l'anglais mais j'ai bien préçisé que

Citation :

j'ai pas un message de type Failed opening 'scr/Arabic.php' for inclusion donc mon include fonctionne !


d'autant plus que j'ai ajoute au tout debut de arabic.php l'instruction
 

Code :
  1. die("message pour verifier que l'inclusion fonctionne" );


et le message s'affiche ..l'include n'a pas échoué!
le probleme vient de cette instruction

Code :
  1. $text = $Arabic->utf8Glyphs($text);


 
et j'ai le message suivant Fatal error: Class 'Arabic' not found in.... je suis même pas sur que utf8Glyphs va résoudre mon problème..je suis toujours persuadé que le problème est soit fwrite soit str_replace qui supporte pas la langue arabe.


Message édité par oppenzero le 20-02-2014 à 18:21:10
n°2220348
bistouille
Posté le 20-02-2014 à 19:38:05  profilanswer
 

As-tu au moins jeté un œil à ce fichier justement ?
 
Tu pourrais t’apercevoir que le nom de la class que tu utilises n'est pas bon  :D  
 
Y'a même une doc incluse dans le zip  :o

n°2220373
oppenzero
Posté le 21-02-2014 à 10:35:37  profilanswer
 

décidément....
j'ai pu utiliser la fonction utf8Glyphs..en vain !
pour cette variable : $text = 'بسم الله الرحمن الرحيم';
voila ce que j'obtiens dans mon fichier RTF : ﻢﻴﺣﺮﻟﺍ ﻦﻤﺣﺮﻟﺍ ï»ªï» ï»Ÿïº ﻢﺴﺑ (le sens de lecture est bien Right-to-Left)
je crois que je préfère encore les ????????????
 

Code :
  1. $myContent = file_get_contents("scr/modele.rtf" );
  2.     $myContent = str_replace("@option@",$option,$myContent);
  3.     .....
  4.     $chemin = "impression/".$nomfichier.".rtf";
  5.     $newFileHandler = fopen($chemin,"a" );
  6.     fwrite($newFileHandler,$myContent);
  7.     fclose($newFileHandler);


y'a t-il une instruction équivalente pour remplacer fwrite et une pour remplacer str_replace?

n°2220379
mechkurt
Posté le 21-02-2014 à 10:56:42  profilanswer
 

file_put_contents
preg_replace
 
Mais ça ne résoudra pas ton problème, dans ton rtf tu ne pourras apparemment pas mettre de l'arabe pur, il faudra les caractères encodé en UTF-8 !


---------------
D3
n°2220548
oppenzero
Posté le 24-02-2014 à 10:17:41  profilanswer
 

merci pour votre réponse.
je suppose que les caractères sont déjà encodés en UTF-8.
 
l'instruction ci-dessous m'affiche correctement l'arabe

Code :
  1. echo($option);


 
le problème surgit lors de l’écriture du fichier (probablement fwrite ou str_replace).
y'a t'il un traitement particulier pour mon fichier RTF source (contenant de l'arabe et du français) ?

n°2220549
mechkurt
Posté le 24-02-2014 à 10:22:42  profilanswer
 

Cf. la 6eme réponse, celle de CZH...
 
...on tourne un peu en rond non ?


---------------
D3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  aidez moi svp probleme php vers word

 

Sujets relatifs
Fortran : Probleme de lecture[ORACLE] problème avec "select in select" ou équivalent
Problème boucle VBA avec vlookupProblème Positionement div
Problème Création fichier texte via vbsProblème avec fonction pow
[Résolu] Problème envoi formulaireProblème de connexions successives à MYSQL
Help Problème VBA: Seriescollection.nameProblème premier site flash
Plus de sujets relatifs à : aidez moi svp probleme php vers word


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR