Changement comportement fonctions suite passage PHP5

Changement comportement fonctions suite passage PHP5 - PHP - Programmation

Marsh Posté le 23-05-2006 à 18:33:19    

Bonjour,
 
J'ai un souci avec des fonctions qui ont été écrites depuis quelques mois / années qui permettaient de nettoyer des champs text area avant insertion en base ainsi qu'une fonction inverse pour les modifications. Ces fonctions marchaient sans problème sous PHP 4. Depuis le passage à PHP5 lors de l'affichage des champs text area pour modification les return sont doublés.
 
Fonction pour enregistrement

Code :
  1. function net_form_enregistrement($a_nettoyer, $textarea=0) {
  2. if ($textarea == '1') {
  3.  $a_nettoyer = makehtml($a_nettoyer);
  4.  $a_nettoyer = eregi_replace("(\r\n)|(\n)|(\r)|(\r<br >\n)|(<br%20> )|(<br%20/> )|(\r<br />\n)|(\r<br>\n)", "<br />", $a_nettoyer);
  5.  $a_nettoyer = eregi_replace(" ", "&nbsp; ", $a_nettoyer);
  6.  $a_nettoyer = eregi_replace("<br&nbsp; />", "<br />", $a_nettoyer);
  7. } else {
  8.  $a_nettoyer = htmlspecialchars($a_nettoyer, ENT_QUOTES);
  9.  //$a_nettoyer = makehtml($a_nettoyer);
  10. }
  11. return $a_nettoyer;
  12. }


 
 
Fonction pour modification

Code :
  1. function net_form_modification($a_nettoyer,$textarea=0) {
  2. if ($textarea == '1') {
  3.  $a_nettoyer = eregi_replace("&nbsp; ", " ", $a_nettoyer);
  4.  $a_nettoyer = unhtmlentities($a_nettoyer);
  5.  $a_nettoyer = eregi_replace("(<br /> )|(\n)|(\r)|(\r<br >\n)|(<br%20> )|(<br%20/> )|(\r<br />\n)|(\r<br>\n)", "\r\n", $a_nettoyer);
  6. } else {
  7.  $a_nettoyer = unhtmlentities($a_nettoyer);
  8.  $a_nettoyer = eregi_replace('"', "&quot;", $a_nettoyer);
  9. }
  10. return $a_nettoyer;
  11. }


 
Autres fonctions appelees

Code :
  1. function makehtml($string){
  2.     $trans = get_html_translation_table(HTML_ENTITIES);
  3.     $newstring = strtr($string, $trans);
  4.     $newstring = nl2br($newstring);
  5.     return $newstring;
  6. }
  7. function unhtmlentities ($string){
  8. $trans_tbl = get_html_translation_table (HTML_ENTITIES);
  9. $trans_tbl = array_flip ($trans_tbl);
  10. return strtr ($string, $trans_tbl);
  11. }


 
 
 
Le fonctionnement est le suivant.
Nous avons un formulaire contenant des text area. Une fois valide on sauvegarde en base. Avant l'insertion on passe le contenu du text area à net_form_enregistrement.
Une fois sauvegardé, le mode affichage est correct. Lorsque l'on veut modifier ce champs on passe en mode edition et le contenu du text area est passé à net_form_modification. C'est à ce moment là que les <br> sont doublés à chaque fois. Le problème vient sans doute du eregi_replace mais j'ai du mal avec ces expressions rationnelles et ces fonctions que je n'ai pas écrites.
 
Merci de votre aide


Message édité par Odin34 le 23-05-2006 à 18:33:44
Reply

Marsh Posté le 23-05-2006 à 18:33:19   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed