Page 1 sur 1

Lire la chaîne à l envers

Posté : 14 avr. 2022, 19:20
par wisefun77
Bonjour,
J aimerai savoir s il est possible de lire une chaîne en partant de la fin et de supprimer tous ce qui est après la dernière balise?

Code : Tout sélectionner

[ADC_START][SDP]1[GUICHET]2[DEM]3[USER_CMDB_DIF_NON]45[DEM_PDT>TPX_1>]5[DEM_PDT>TPX_1>]5[DEM_PDT>TPX_1>]5[DEM_PDT>TPX_1>]5[DEM_PDT>TPX_1>]
Je dois supprimer la dernière balise 5.

Code : Tout sélectionner

5[DEM_PDT>TPX_1>]

Sachant que le chiffre n est pas toujours le même.
J'ai essayé avec strrpos() et strripos(), sans résultats.
Merci.

Re: Lire la chaîne à l envers

Posté : 14 avr. 2022, 20:46
par or 1
J'ai essayé avec strrpos() et strripos(), sans résultats.
avec quel code ?

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 13:32
par wisefun77
bonjour,
j'ai fait une condition sur les pages en cas de retour en arrière.
lorsque l'user clique sur le bouton précédent, cela arrive dans le elseIf.

Code : Tout sélectionner

elseif(isset($_SESSION["Balises2"])){ $page='4'; $Listenature = $_SESSION['listetype']; $nature = $_SESSION['Balises2']; $pos = strpos($nature, $page); // //Supprimer la chaine après la valeur de $pos $_SESSION['Balises2'] = substr($nature,0,$pos); $_SESSION['Balises2'] = $_SESSION['Balises2'].$page; echo $_SESSION['Balises2']. "ELSEIF";
c'est très bien pour page en page.
Mais j'ai des pages qui sont appelées plusieurs fois.
j'aimerai que sur ces pages si l'user à remplit plusieurs fois le même formulaire sur la même page, lorsqu'il fait précédent, cela ne retire que la dernière balise renseignée, et non toutes les balises avec le même chiffre.
Ex:
j'ai mis un marqueur dans chaque pages.
Page 1 >> formulaire rempli redirige vers la page 2.
Page2 >>demande si besoin d'ajouter une autre intervention.
Si oui ouverture de la page 3 avec le formulaire. une fois rempli l'user clique sur suivant et cela redirige vers la page 2, qui prends la nouvelle balise, et redemande si besoin d'ajouter une autre intervention.
Si l'user fait encore oui sur la page2, cela redirige vers la page 3, et ainsi de suite.
Si l'user fait précédent sur la page 2, cela redirige à la page 1 et supprime les balises avec le même marqueur.
J'aimerai que je puisse faire en sorte que cela ne supprime que la dernière balise et son marqueur.

Merci à vous

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 13:49
par or 1
J'ai essayé avec strrpos() et strripos(), sans résultats.
où est strrpos dans le code donné ?

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 14:20
par wisefun77
Bonjour or1,
Désolé j'ai tout supprimé et remis comme avant.
Je n'ai plus le code.

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 16:04
par wisefun77
Bonjour,
voilà ce que j'ai essayé de faire.

Code : Tout sélectionner

elseif(isset($_SESSION['Balises2'])){ $page='6'; $nature = $_SESSION['Balises2']; $pos = strpos($nature, -$page); // // //Supprimer la chaine après la valeur de $pos = 25 $_SESSION['Balises2'] = strrpos($nature,0,-$pos); //precedent(); echo $_SESSION['Balises2']. "ELSEIF";
Merci

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 16:04
par wisefun77
Bonjour,
voilà ce que j'ai essayé de faire.

Code : Tout sélectionner

elseif(isset($_SESSION['Balises2'])){ $page='6'; $nature = $_SESSION['Balises2']; $pos = strpos($nature, -$page); // // //Supprimer la chaine après la valeur de $pos = 25 $_SESSION['Balises2'] = strrpos($nature,0,-$pos); //precedent(); echo $_SESSION['Balises2']. "ELSEIF";
Merci

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 16:37
par wisefun77
Bonjour,
Celle-ci non plus

Code : Tout sélectionner

$_SESSION['Balises2'] = substr($nature,0,strrpos($nature,'$page',$pos));
Merci

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 16:52
par GuillaumeLM
Bonjour,
et si tu passais par un array_count_values puis un array_slice, ça n'irais pas?

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 17:03
par wisefun77
Bonjour GuillaumeLM,

J'aimerai bien sincèrement.
Mais je suis nul hyper en array. :D :D :D
Je veux apprendre. \:D/
Merci de me guider.

Re: Lire la chaîne à l envers

Posté : 15 avr. 2022, 19:44
par or 1
$_SESSION['Balises2'] = substr($nature,0,strrpos($nature,'$page',$pos));
il faut debuguer. avec par exemple :
var_dump($nature, '$page', $pos, strrpos($nature,'$page',$pos));

Re: Lire la chaîne à l envers

Posté : 19 avr. 2022, 16:06
par wisefun77
Bonjour à Tous,
j'ai trouvé la solution en passant par un regex. Que j'ai mis dans une function.

Code : Tout sélectionner

<?PHP function precedent() { $d = $_SESSION['Balises2']; $regex = "/(.*)[0-9]+\\[.*\\]/"; preg_match($regex, $d, $resultats); $reste = $resultats[1]; // $reste contient la chaine sans le dernier morceau echo $reste. "ELSEIF"; } ?>
Merci à tous.
Demain je passe l'entretient d'embauche. :roll: :roll: 8-| 8-|