Remplacement de caractères dans un formulaire

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 16:32

Je n'arrive pas à convertir les caractères d'une chaîne de caractères récupérée dans un formulaire.

Voici le code de demande.htm :
<html><body>
<form method="post" action="reponse_chainedecaractere.php">
Mot : <input type="text" name="mot" size="12">
<input type="submit" value="OK">
</form></body></html>
Voici maintenant le code de reponse_chainedecaractere.php :
<html>
<head>
</head>
<body>
<?php
$mot = $_POST ['mot'];
$mot = strtr ($mot, "ï", "i");
echo "<center>Le mot est $mot.</center>"
?> 
</body>
</html>
Et là, si je saisis le mot maïs dans mon formulaire, ça m'affiche :
Le mot est maïs.
Par contre quand reponse_chainedecaractere.php est :
<html>
<head>
</head>
<body>
<?php
$mot = "maïs";
$mot = strtr ($mot, "ï", "i");
echo "<center>Le mot est $mot.</center>"
?> 
</body>
</html>
Ça m'affiche bien :
Le mot est mais.
J'aimerais donc savoir ce que je dois faire pour convertir la chaîne de caractères de mon formulaire.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 16:54

ça veut dire que ton $_POST est mal récupéré.
$mot = $_POST['mot'];
est mieux que
$mot = $_POST ['mot'];

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 16:57

J'ai fait comme tu dis, mais ça ne marche pas mieux.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 16:59

Qu'as-tu comme résultat si tu fais :
echo $_POST['mot'];
Edit, j'ai testé, tout fonctionne chez moi.

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 17:25

Ben moi ça fait toujour pareil et 'aimerai bien savoir pourquoi.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 18:35

Tu dois avoir un problème de config dans ce cas. Ce n'est pas ton code php qui est en cause apparemment.

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 19:10

J'avais fait les précédents essais sur mon Macintosh en local. Maintenant 'ai mis les deux fichiers sur mon espace web chez Free, ça ne marche pas non plus. Le php de Free serait-il également mal configuré ?

L'adresse est la suivante : http://vincent.domino.pao.free.fr/demande_simple.htm

J'y ai mis les deux fichiers "demande_simple.htm" et "reponse_chainedecaractere.php" dont voici les contenus :

demande_simple.htm
<html><body>
<form method="post" action="reponse_chainedecaractere.php">
Mot : <input type="text" name="mot" size="12">
<input type="submit" value="OK">
</form></body></html>
reponse_chainedecaractere.php
<html>
<head>
</head>
<body>
<?php
$mot = $_POST['mot'];
$mot = strtr ($mot, "ï", "i");
echo $_POST['mot'];
?> 
</body>
</html>

Eléphant du PHP | 377 Messages

18 mai 2006, 19:32

est-ce que ton fichier reponse_chainedecaractere.php est écrit dans le même charset que ton HTML généré?
[EDIT]
D'ailleurs ton HTML n'a pas de charset, essaie d'en rajouter un pour voir...
Petit scarabée deviendra grand

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 19:33

En fait, en relisant les messages, je m'aperçois qu'il ne faut pas mettre
echo $_POST['mot'];
à la fin, mais
echo "$mot";
Je l'ai donc corrigé le fichier de réponse à l'adresse http://vincent.domino.pao.free.fr/demande_simple.htm
J'ai donc mis pour le fichier "reponse_chainedecaractere.php" :
<html>
<head>
</head>
<body>
<?php
$mot = $_POST['mot'];
$mot = strtr($mot, "ï", "i");
echo "$mot";
?> 
</body>
</html>
Mais de toute façon, ça ne marche pas plus. Comment ça se fait ?

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 19:36

Nos messages se sont croisés, c'est pour ça que je n'ai pas répondu à ce que tu viens de me dire.

Je ne connaissais pas le charset. Je vais en insérer pour voir ce que ça donne et je te tiens au courant.

Merci.

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 20:10

J'ai mis une balise

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html" charset="ISO-8859-15">
dans les deux documents. Je ne sais pas si c'est ça qu'il faut faire, ça ne marche pas. J'ai mis également :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
et ça ne marche pas non plus.

Eléphant du PHP | 377 Messages

18 mai 2006, 20:36

regarde dans ton éditeur de code quel est l'encodage utilisé, et ensuite tu mets le même charset pour ta page. Si ça vient pas de là, je vois po :?
Petit scarabée deviendra grand

legniarf
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 21:01

OK, je vais regarder ce que j'ai dans BBEdit. Et c'est bien comme ça qu'il faut faire, mettre dans les <head> de mes deux fichiers le code ci-dessous ?
<meta http-equiv="Content-Type" content="text/html" charset="ISO-8859-15">

Eléphant du PHP | 377 Messages

18 mai 2006, 22:12

Dans ton head :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
en remplacant ISO-8859-1 par le charset qui va bien ;)
Petit scarabée deviendra grand

legniarf
Invité n'ayant pas de compte PHPfrance

19 mai 2006, 10:19

Super ! C'était bien le charset ! Comme je suis sur Mac, mon traitement de texte était en charset Mac-roman. J'ai enregistré les fichiers en charset ISO-8859-1 et j'ai rajouté le méta que tu m'as donné dans le <head> de mes fichiers et là ça marche !
Merci :D