Page 1 sur 1

htmlentities() ???

Posté : 24 févr. 2005, 15:24
par dark_vidor
voila je me trouve devant un petit pb

lorsque j'execute en local ceci (avec easyphp) avec la phrase
Un \'apostrophe\' en <strong>gras</strong>
<?
$textf = "";

if (isset($_GET['value']))
{
$text = $_POST['text'];
$textf = htmlentities($text);
}
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form" method="post" action="index.php?value=ok">
  <textarea name="text" cols="50" rows="10"></textarea>
  <br>
  <br>
  <input type="submit" name="Submit" value="Envoyer">
</form>
Texte apres<br>
<br>
<textarea cols="50" rows="10"><? echo($textf); ?></textarea>
<br>
<br>
<? echo htmlentities($text);?>
</body>
</html>
j'obtiens dans les deux cas
Un \'apostrophe\' en <strong>gras</strong>
au lieu de
Un 'apostrophe' en <strong>gras</strong>
comme marqué dans la doc
http://fr.php.net/manual/fr/function.htmlentities.php

pk ? pouvez vous m'expliquer ?

merci par avance

Posté : 24 févr. 2005, 15:29
par Epeda
Tu fais le test avec un GET alors que ton formulaire est en POST

Posté : 24 févr. 2005, 15:37
par Cyrano
Pas seulement ça : le textarea est en dehors du formulaire, tu n'obtiendras donc de toute façon pas le contenu ;)

Posté : 24 févr. 2005, 18:53
par dark_vidor
le test est bien avec un post :roll:

le get c'est pour voir si le formulaire est envoyer :arrow:

le texte area en dehors du formulaire ça na rien a voir ...
sinon pk ça fonctionne pas nan plus mon
<? echo htmlentities($text);?> ? :roll:

Posté : 25 févr. 2005, 00:06
par Epeda
A mon avis tu devrais être un poil plus courtois avec les gens qui prennent la peine de te répondre.

Ton textarea se trouve en dehors de ta balise form, c'est pourquoi lors de l'envoi du formulaire et des données, ton écho ne retourne RIEN.

Concernant le POST et le GET...
if (isset($_GET['value'])) 
Ca c'est un test. Il est fait en GET...
$text = $_POST['text']; 
Ca c'est une affectation de valeur à une variable. Elle est faite en POST... Ton "if" étant faux, il ne fait pas l'attribution. Donc il ne fera pas ton écho...
<form name="form" method="post" action="index.php?value=ok"> 
Ca c'est ton formulaire. Il est fait en POST...

Conclusion : soit tu mets tout en GET, soit tout en POST...

Re: htmlentities() ???

Posté : 25 févr. 2005, 00:27
par ouckileou
Un \'apostrophe\' en <strong>gras</strong>
ça c'est ce que tu verras dans ta page
au lieu de
Un 'apostrophe' en <strong>gras</strong>
pour voir ça il faut regarder dans le source

même si effectivement les GET et les POST se mélangent un peu ici,
le code fonctionne très bien chez moi

Posté : 25 févr. 2005, 12:31
par dark_vidor
arf oué effectivement dans la source ça fonctionne :roll:

en fait j'aimerai creer un script capable de me convertir des textes de cette forme
Bienvenue à tous sur La Derniere Bataille !
Nous avons lancé la version 2 du site ... elle est le fruit de quelques semaines de réflexion et de travail. Nous espérons qu'elle vous plaira et nous nous excusons de la gène occasionnée par le travail restant ...
Bonne visite !
en
Bienvenue &agrave; tous sur La Derniere Bataille !<br> Nous avons lanc&eacute; la version 2 du site ... elle est le fruit de quelques semaines de r&eacute;flexion et de travail. Nous esp&eacute;rons qu'elle vous plaira et nous nous excusons de la g&egrave;ne occasionn&eacute;e par le travail restant ...<br>Bonne visite !<br>
il faudrait donc que s'effectue non seulement le changement des caractère spéciaux et que tout les espaces inutiles soit virer aussi

es ce possible ?

Posté : 25 févr. 2005, 15:27
par ouckileou
quels espaces inutiles ?
ici tu n'as que des retours chariots converti en <br>

Posté : 26 févr. 2005, 12:26
par dark_vidor
les retour chariots sont effectivement converti en <br>

il faut egalement que les retour ligne soit enlevé pour optimiser les pages ...
des logiciels le font ... mé dans ce cas precis c'est pour optimiser un texte avant un insertion dans la base de donnée pour éviter qu'elle soit trop grosse

es ce possible :roll:

Posté : 01 mars 2005, 23:10
par dark_vidor
ben personne ne sait :cry: :cry:

Posté : 02 mars 2005, 00:03
par Flood
Hello,

Regarde l'utilité de la fonction nl2br()...
Tu peux aussi t'en sortir avec des str_replace() avec comme paramètres un jeu avec \r et \n...

Si tu veux supprimer aussi les espaces répétés au moins deux fois consécutives, alors un petit preg_replace() te fera le boulot...

/Flood

Posté : 02 mars 2005, 05:50
par Xenon_54
Je te conseille alors de ne pas stocker la version "convertie" de ta chaine (avec les <br />). Tu devrais plutôt stocker directement ton texte et convertir à l'affichages les retours de ligne en <br /> avec nl2br(). Cela t'économisera 6 octets. :lol:

De plus, cette manière de faire t'évitera bien des soucis. Surtout si tu désires ensuite pouvoir modifier le texte en question: les retours de lignes auront été préservés et donc directement affichage dans un textarea.

;)

Posté : 02 mars 2005, 21:31
par dark_vidor
généralement un \n signifie un retour ligne aussi dans le code ( dans les bases de donnée du moins c'est le cas... il me semble)
comment on fait pour preserver le \n mais enlever le retour ligne qui se fait

j'aimerai ainsi op^timiser au maximum mes textes avant insertion en base ^^

autre question comment on utilise avec easy php la base en local ( c 'est koi les identifiants et tt ^^ )