Supprimer le caractère & dans une chaine

Supprimer le caractère & dans une chaine - PHP - Programmation

Marsh Posté le 07-06-2022 à 18:46:47    

Bonjour,  
J'ai ce code pour trier les balises qui fonctionne à merveille.

Code :
  1. <?PHP
  2. function triBalises()
  3. {
  4.     $baliseStart ='4';
  5.      $baliseEnd ='4';
  6.     $nature = $_SESSION['Balises2'];
  7.     echo $_SESSION['Balises2'].'<br> TRIBALISE <br><br>';
  8.     // Traitement du début de la chaine.
  9.     $pos = strpos($nature, $baliseStart);
  10.     $_SESSION['BalisesStart'] = substr($nature,0,$pos);
  11.     echo 'BaliseStart ==>'.$_SESSION['BalisesStart'].'<br> TRI BALISESTART <br><br>' ;
  12.  
  13. //Traitement de fin de chaine.
  14. $nature_inversee = strrev($nature); //on inverse la string
  15. $baliseEnd ='4';
  16. $pos = strpos($nature_inversee, $baliseEnd); //position du caractère 4 dans la string inversée
  17. $_SESSION['BalisesEnd'] = substr($nature_inversee,0, $pos);
  18. $_SESSION['BalisesEnd'] = strrev( $_SESSION['BalisesEnd']);
  19. echo 'BaliseEnd ==>'.$_SESSION['BalisesEnd'].'<br> TRI BALISES END <br><br>'; //Doit donner la fin de la chaine des balises.
  20. // Concaténation des chaines.
  21. $_SESSION['BaliseNew'] = $_SESSION['BalisesStart']. $_SESSION['Balises3'].$_SESSION['Balises4'].$_SESSION['BalisesEnd'] ;
  22. $_SESSION["BalisesGeneral"] = $_SESSION["BaliseNew"];
  23. echo 'BaliseTotale ===>'.$_SESSION['BalisesGeneral'].'<br> tri balises';
  24. }
  25.     ?>


Seulement si dans la balises le chiffre 4 existe, cela coupe la balise ce qui est normal.
J'ai donc remplacé la valeur de $page par &.
Mais je ne sait comment lui dire de retirer le & dans le preg_replace.
la chaine est bien trié mais il reste le &5

Code :
  1. [ADC_START][SDP][GUICHET][DEM][USER_CMDB_DIF_NON]&5[DEM_PDT_PCF < AE_PC9[RDV_NON][RDV_BAL][RSDP_NC][COMMENT/NO][REGUL_NON][DEM_PDT_PCF < AE_PC444444444>< TPX_1>][ba5e0bf9][7/06/2022 18:40:53][Version_2.02][ADC_END]


Voici le code pour preg_replace.

Code :
  1. // Traitement des chiffres.
  2. $chaineAvecChiffres = $_SESSION['BalisesGeneral'];
  3. $chaineSansChiffres = preg_replace('/\]\d+\\[/', '][', $chaineAvecChiffres);
  4. $_SESSION["BalisesGeneral"] = $chaineSansChiffres;
  5. echo $_SESSION["Balises2"].'<br>Balises2<br><br>'.$_SESSION["Balises3"].'<br>Balises3<br><br>'.$_SESSION["Balises4"].'<br>Balises4<br><br>'.$_SESSION["BalisesGeneral"].'<br>BaliseGénérale<br><br>'."IF sans chiffres'";


Merci


---------------
De retour au PHP après plus de 12 ans d'absence pour retrouver un emploi.
Reply

Marsh Posté le 07-06-2022 à 18:46:47   

Reply

Marsh Posté le 07-06-2022 à 18:59:24    

Bonjour,  
J'ai rajouté ce code juste après le premier preg_replace

Code :
  1. // Traitement des caractères.
  2. $chaineAvecCaractere = $_SESSION['BalisesGeneral'];
  3. $chaineSansCaractere = preg_replace('/\]\&+\[/', '][', $chaineAvecCaractere);
  4. $_SESSION["BalisesGeneral"] = $chaineSansCaractere;
  5. echo $_SESSION["Balises2"].'<br><br>'.$_SESSION["Balises3"].'<br><br>'.$_SESSION["Balises4"].'<br><br>'.$_SESSION["BalisesGeneral"].'<br><br>'."IF sans Caractere'";


 
Est-il possible de faire un seul code?
Merci


---------------
De retour au PHP après plus de 12 ans d'absence pour retrouver un emploi.
Reply

Marsh Posté le 09-06-2022 à 18:24:11    

Bonjour,
 
En l'état la demande est trop brouillon. Il serait bien d'exprimer ce que tu souhaites faire, de quoi tu pars, à quoi tu veux arriver, dans quel contexte, etc.
Tu nous parles "$page" mais cette variable n'apparait nulle part dans ton code, de même on retrouve $_SESSION["Balises3"] et $_SESSION["Balises4"] on ne sait pas d'où ça sort.
Le seul truc que je comprends de ton code c'est que tu gardes le début d'un texte jusqu'à un délimiteur, ainsi que la fin d'un texte qui va d'un autre (et encore je suppose que c'est un autre) délimiteur jusqu'à la fin.
Tu nous parles de tri mais je ne vois pas la moindre fonction de tri...


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 09-06-2022 à 22:02:28    

Petite remarque en passant : avoir des commentaires de ce genre, ça ne sert à rien.
//on inverse la string
// Concaténation des chaines.
 
C'est du paraphrasage du code, ça n'apporte rien de plus comme info. Par contre, expliquer pourquoi on doit inverser la chaîne ou pourquoi on concatène, là, ça serait utile. Bref, en commentaires, on aurait une description des étapes de l'algorithme, ça serait bien mieux.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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