J'ai ce code pour trier les balises qui fonctionne à merveille.
Code : Tout sélectionner
<?PHP
function triBalises()
{
$baliseStart ='4';
$baliseEnd ='4';
$nature = $_SESSION['Balises2'];
echo $_SESSION['Balises2'].'<br> TRIBALISE <br><br>';
// Traitement du début de la chaine.
$pos = strpos($nature, $baliseStart);
$_SESSION['BalisesStart'] = substr($nature,0,$pos);
echo 'BaliseStart ==>'.$_SESSION['BalisesStart'].'<br> TRI BALISESTART <br><br>' ;
//Traitement de fin de chaine.
$nature_inversee = strrev($nature); //on inverse la string
$baliseEnd ='4';
$pos = strpos($nature_inversee, $baliseEnd); //position du caractère 4 dans la string inversée
$_SESSION['BalisesEnd'] = substr($nature_inversee,0, $pos);
$_SESSION['BalisesEnd'] = strrev( $_SESSION['BalisesEnd']);
echo 'BaliseEnd ==>'.$_SESSION['BalisesEnd'].'<br> TRI BALISES END <br><br>'; //Doit donner la fin de la chaine des balises.
// Concaténation des chaines.
$_SESSION['BaliseNew'] = $_SESSION['BalisesStart']. $_SESSION['Balises3'].$_SESSION['Balises4'].$_SESSION['BalisesEnd'] ;
$_SESSION["BalisesGeneral"] = $_SESSION["BaliseNew"];
echo 'BaliseTotale ===>'.$_SESSION['BalisesGeneral'].'<br> tri balises';
}
?>
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 : Tout sélectionner
[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]
Code : Tout sélectionner
// Traitement des chiffres.
$chaineAvecChiffres = $_SESSION['BalisesGeneral'];
$chaineSansChiffres = preg_replace('/\]\d+\\[/', '][', $chaineAvecChiffres);
$_SESSION["BalisesGeneral"] = $chaineSansChiffres;
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'";