Afficher un fichier txt contenant des caractères accentués.

Invité
Invité n'ayant pas de compte PHPfrance

02 août 2005, 10:36

Bonjour,

Je débute en php.

Voici mon problème.

Je voudrais "inclure" un fichier txt écrit en français (donc avec caractères accentués) dans un page xhtml.

J'ai lu la doc php et voici mon code :
if (is_file("index.txt"))
{
	print "<div class='content'>" ;
	print "<p>";
	$content = file_get_contents("index.txt",1);
	$content = htmlentities($content,ENT_QUOTES,ISO-8859-1);
	$content=ereg_replace("\n\n","</p><p>",$content);
	$content=ereg_replace("\n","<br/>",$content);
	print $content;
	print "</p>";
	print "</div>";
}
Cela ne fonctionne pas trop mal : les retours simples sont remplacés par <br/>, les doubles par </p><p>.

Mais mes caractères accentués sont horrible : "préférence" devient "prŽfŽrence".

J'ai remplacé "ISO-8859-1" par "ISO-8859-15", mais sans résultats.
Y a-t-il une solution simple sans devoir convertir le fichier txt?

Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

02 août 2005, 10:37

UTF 8 ?

h2o
Eléphant du PHP | 81 Messages

02 août 2005, 10:48

[désolé, je n'étais pas connecté pour poser la question]

UTF-8 est l'encodage texte que j'ai utilisé en tout premier lieu (je programme pas mal xml-xslt) : mais le résultat n'est pas bon non plus.

Note : j'utilise php 5.
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

02 août 2005, 20:44

tu peux aussi jeter un coup d'oeuil au niveau du conf d'apache sur le AddDefaultCharset et regarder l'encodage de ton navigateur.
c'est comme ça que j'avais résolu mon pb(en passant tout en iso).
mais si htmlentities marchait bien sans ton fichier texte ou que tu es hébergé alors je ne sais pas.

h2o
Eléphant du PHP | 81 Messages

02 août 2005, 21:11

Je suis hébergé : pas trop envie de me casser les c* avec la maintenance du serveur.

Et htmlentities ne semble pas marcher pour convertir un "é" en

Code : Tout sélectionner

&eacute;
Dommage. C'est ces petites choses simple que parfois j'espère...
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Eléphant du PHP | 147 Messages

03 août 2005, 00:37

Je n'ai pas la solution pour tes accent mais il serai peut etre possible de remplacer a l'aide d'une fonction qui parcoure ton fichier tous les caractère accentué par des caractère non accentué.

Pourquoi faire simple quand on peut faire compliqué (lol)

h2o
Eléphant du PHP | 81 Messages

03 août 2005, 09:28

Je n'ai aucun avantage à afficher un texte sans accents : cela ferais mauvais genre sur le site.

Bon, je vais chercher une alternative.
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 09:36

Et htmlentities ne semble pas marcher pour convertir un "é" en

Code : Tout sélectionner

&eacute;
bizarre... c'est pourtant ce qu'on utilise d'habitude :shock:

tu peux peut-être refaire un essai et nous le montrer si ça ne marche pas ;)

h2o
Eléphant du PHP | 81 Messages

04 août 2005, 09:36

J'ai trouvé le problème et donc la solution. Le code php n'étais pas en cause mais l'encodage du texte importé n'était pas au bon format (encodage Mac OS Roman et non pas Windows latin 1).

Merci à ouckileou qui par sa remarque m'a mis sur la piste.
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

08 sept. 2005, 13:18

J'ai presque le même problème je veux que mon formulaire puisse envoyer les caractère accentués de manière correcte voici le script:

Merci de me guider

<?php
## -- --------- START OF CONFIG SECTION --------- ##
## STEP ONE: Change the info below to your details

$SendToEmail = "[email protected]";                  ## Your Email Address
$YourWebsiteURL = "http://www.test.ca/";   ## Your Website URL 
$YourName = "test";                       ## Your Name or Company Name
$yoursubject = "Formulaire de rapport du $date $datee $dateee" ;         ## The Email Subject Line
$ThankyouURL = "merci.htm";                    ##  Send them here after they have filled in the form

## STEP TWO: Change details below for the email footer of the confirmation email.
$EmailFooter = "
Merci,

L'équipe de test
Web: http://www.test.ca/";

## ---------- END OF CONFIG SECTION ------------- ##

## If they call this page direct from the browser, send them away because they havent filled in the form!
if(!isset($email)) {
 header("location: $YourWebsiteURL");     ## Redirect them to your websites front page
 exit();
}

## Send the Email to you ....
 $yoursubject = "$yoursubject";
 $emailtext = "
-----------------------------------------------------------------------------
   ".$yoursubject."
-----------------------------------------------------------------------------

".$prenom." ".$nom." a envoyé son rapport du: ".$date." ".$datee." ".$dateee."

1-Prénom du Rep:  || ".$prenom."
-----------------------------------------------------------------------------
2-Nom du Rep:  || ".$nom."
-----------------------------------------------------------------------------


Merci,

".$YourName." 
".$YourWebsiteURL."
";
	$yoursubject = stripslashes($yoursubject);
    $emailtext = stripslashes($emailtext);
 @mail("$SendToEmail", $yoursubject, $emailtext, "From: $email"); ## Email Sent

## Now lets send a thankyou email to the sender
 $emailsubject = "Re: ".$yoursubject."";
 $autoemail = "
-----------------------------------------------------------------------------
   Re: ".$yoursubject."
-----------------------------------------------------------------------------

Merci ".$prenom." ".$nom."  Pour le rapport du: ".$date." ".$datee." ".$dateee."
Voici une copie de votre rapport de la journée

1-Prénom du Rep:  || ".$prenom."
-----------------------------------------------------------------------------
2-Nom du Rep:  || ".$nom."
-----------------------------------------------------------------------------

".$EmailFooter."
";
	$yoursubject = stripslashes($yoursubject);
    $autoemail = stripslashes($autoemail);
 @mail($email, $emailsubject, $autoemail, "From: $SendToEmail  "); ## Email Sent

## The emails have both been sent, so we should now send the user to a confirmation page
 header("Location: $ThankyouURL"); ## Don't change this, change the $ThankyouURL at the top!
 exit;
## That's it !


?>