textarea et espcace

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : textarea et espcace

par Ryle » 03 nov. 2007, 01:47

Je prends note, mais en meme temps ca ne changera que dans son code source.
Dans ce cas oui, mais il est bon de savoir que les \r\n ou \n sont conservés. Tu pourrais par exemple faire un striptags() pour virer les <br /> tout en conservant les retours à la ligne ou même appeller 2 fois la fonction nl2br() pour doubler tous les retours à la ligne (chose que tu n'aurais pu faire s'il y avait eu remplacement).

Donc c'est vrai qu'ici ca change rien, c'était plus pour info :)

par h0_noMan » 03 nov. 2007, 01:42

A noter par ailleurs que nl2br() ne remplace rien, et se contente d'ajouter un <br /> quand il trouve un retour à la ligne (ça peut être utile de le savoir :))
Je prends note, mais en meme temps ca ne changera que dans son code source.
Je te recommande donc cette transformation uniquement s'il y a deux espaces contigues (ou plus, le résultat sera le même) : str_replace(' ', ' &nbsp;', $chaine); Ainsi s'il y a deux espaces cote à cote, seul le second est remplacé et si nécessaire, le navigateur peut couper la chaine et ajouter un retour à la ligne sur le premier ;)
Merci du conseil.
Code rectifié.

par Ryle » 03 nov. 2007, 01:30

Juste une remarque en passant... c'est pas forcément judicieux de remplacer tous les espaces de "l'utilisateur" par un espace non sécable (nbsp). En effet, s'il n'y a pas de tirer ou de retour à la ligne dans la saisie d'un paragraphe, tu vas obtenir une seule ligne de quelques kilomètres de long, que le navigateur ne saura pas où couper.

Je te recommande donc cette transformation uniquement s'il y a deux espaces contigues (ou plus, le résultat sera le même) : str_replace(' ', ' &nbsp;', $chaine); Ainsi s'il y a deux espaces cote à cote, seul le second est remplacé et si nécessaire, le navigateur peut couper la chaine et ajouter un retour à la ligne sur le premier ;)

A noter par ailleurs que nl2br() ne remplace rien, et se contente d'ajouter un <br /> quand il trouve un retour à la ligne (ça peut être utile de le savoir :))

par h0_noMan » 03 nov. 2007, 01:23

Tu pourrais tout mettre dans une seule fonction.

Code : Tout sélectionner

nl2br() remplace : \n -> \n<br /> stripslashes() remplace : \' -> ' \\ -> \ htmlentities() remplace : & -> & < -> < > -> > ' -> &apos; " -> "
$replace = array('\n'      ,'\r','  '     ,'&'    ,'<'   ,'>'   ,'\''    ,'"'     ,'\\\'','\\\\');
$by      = array('\n<br />',''  ,' &nbsp;','&','<','>','&apos;','"','\''  ,'\\'  );
echo str_replace($replace,$by,$message);

par phi3001 » 03 nov. 2007, 00:41

oups

là, la fonction nl2br ne marche pas

tout les caracteres se suivent


merci encore

par h0_noMan » 03 nov. 2007, 00:32

echo  str_replace(' ','&nbsp;',nl2br(stripslashes(htmlentities($message)))); 

par phi3001 » 03 nov. 2007, 00:07

super merci

par contre j'arrive a mettre les 2 codes en 1 ?

echo str_replace(' ','&nbsp;',$message);
echo  nl2br(stripslashes(htmlentities($message)));

par h0_noMan » 02 nov. 2007, 23:55

Essayes en remplacant les espaces par des &nbsp;
echo str_replace(' ','&nbsp;',$message);

textarea et espcace

par phi3001 » 02 nov. 2007, 23:47

j'ai un formulaire textarea

j'aimerai conserver les espaces que l'utilisateur pourrait faire.

exemple : si l'utilisateur en debut de 1 ere ligne decide de faire 10 espaces et sur la 2nd ligne n'en faire aucun, je veux garder cette mise en forme.
en fait il faudrait considere les espaces comme des caracteres.

voici le code qui traite ma variable $message
echo  nl2br(stripslashes(htmlentities($message)));
merci d'avance