htmlentities() ???

Eléphant du PHP | 231 Messages

24 févr. 2005, 15:24

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

Eléphant du PHP | 102 Messages

24 févr. 2005, 15:29

Tu fais le test avec un GET alors que ton formulaire est en POST

Mammouth du PHP | 19672 Messages

24 févr. 2005, 15:37

Pas seulement ça : le textarea est en dehors du formulaire, tu n'obtiendras donc de toute façon pas le contenu ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 231 Messages

24 févr. 2005, 18:53

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:

Eléphant du PHP | 102 Messages

25 févr. 2005, 00:06

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...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

25 févr. 2005, 00:27

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

Eléphant du PHP | 231 Messages

25 févr. 2005, 12:31

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

25 févr. 2005, 15:27

quels espaces inutiles ?
ici tu n'as que des retours chariots converti en <br>

Eléphant du PHP | 231 Messages

26 févr. 2005, 12:26

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:

Eléphant du PHP | 231 Messages

01 mars 2005, 23:10

ben personne ne sait :cry: :cry:

ViPHP
ViPHP | 60 Messages

02 mars 2005, 00:03

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

Mammouth du PHP | 1885 Messages

02 mars 2005, 05:50

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.

;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 231 Messages

02 mars 2005, 21:31

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 ^^ )