[RESOLU] Lire la chaîne à l envers

Eléphant du PHP | 213 Messages

14 avr. 2022, 19:20

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.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

14 avr. 2022, 20:46

J'ai essayé avec strrpos() et strripos(), sans résultats.
avec quel code ?

Eléphant du PHP | 213 Messages

15 avr. 2022, 13:32

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
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

15 avr. 2022, 13:49

J'ai essayé avec strrpos() et strripos(), sans résultats.
où est strrpos dans le code donné ?

Eléphant du PHP | 213 Messages

15 avr. 2022, 14:20

Bonjour or1,
Désolé j'ai tout supprimé et remis comme avant.
Je n'ai plus le code.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

15 avr. 2022, 16:04

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
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

15 avr. 2022, 16:04

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
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

15 avr. 2022, 16:37

Bonjour,
Celle-ci non plus

Code : Tout sélectionner

$_SESSION['Balises2'] = substr($nature,0,strrpos($nature,'$page',$pos));
Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphanteau du PHP | 44 Messages

15 avr. 2022, 16:52

Bonjour,
et si tu passais par un array_count_values puis un array_slice, ça n'irais pas?
L'illogisme n'est que la logique des autres!

Eléphant du PHP | 213 Messages

15 avr. 2022, 17:03

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.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

15 avr. 2022, 19:44

$_SESSION['Balises2'] = substr($nature,0,strrpos($nature,'$page',$pos));
il faut debuguer. avec par exemple :
var_dump($nature, '$page', $pos, strrpos($nature,'$page',$pos));

Eléphant du PHP | 213 Messages

19 avr. 2022, 16:06

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-|
De retour au PHP pour essayer de préserver mon emploi à 59 ans.