Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Les Langages Du Web _ sous-chaines en php

Écrit par : Mayol 2 May 2020, 17:20

Bonjour à tous.
Avec le confinement, je me suis remis (un peu) au php.
Et je suis tombé sur un os que je n'arrive à résoudre, même avec l'aide d'internet malgré mes longues recherches (en français).
Donc, j'aurais besoin d'un peu d'aide. Voici mon problème :

J'ai une chaine de caractères avec des sous-chaines séparés par un slash (/).
Je voudrais capter l'antépénultième (avant avant dernier morceau de ma chaine).
Je ne peux le faire en basant la recherche sur sa position par rapport au début de la chaine, car celle-ci varie en longueur et en nombre de sous-chaines.
Mais celle que je veux capter est toujours à la même position par rapport à la fin :
Exemples :
lala/azerty/sdfg/MAISON/mkjh/jjg.p
ou
/kjg/dfgho/cvbnt/ala/azerty/sdfg/MAISON/mkjh/jjg.p
Je veut capter la chaine qui se trouve avant avant dernière (ici, Maison).
Puis-je espérer de l'aide ? Une bonne âme ? Merci d'avance.
P.S. : php 7.xx

Écrit par : scoch 2 May 2020, 19:23

Bonjour,

je ne suis pas spécialiste de PHP, il existe peut-être une façon plus optimisée de faire que celle-ci :
1. convertir la chaîne en tableau avec la fonction explode
2. extraire l’avant-dernier élément, donc à la clef longueur - 3

Code
$s1 = "lala/azerty/sdfg/MAISON/mkjh/jjg.p";
$s2 = "/kjg/dfgho/cvbnt/ala/azerty/sdfg/MAISON/mkjh/jjg.p";

function extraireChaine($s) {
    $tab = explode("/", $s);
    return $tab[count($tab) - 3];
}
echo extraireChaine($s1);//MAISON
echo extraireChaine($s2);//MAISON

Écrit par : Mayol 3 May 2020, 09:03

Super ! Merci beaucoup, scoch.

Écrit par : claudsaille 18 Nov 2020, 21:40

Bonjour , j'ai consulter plusieurs cours [moderators fighting spam] tu peux voir ici la fonction https://www.php.net/manual/fr/function.explode.php je pense qu'il peut être une solution pour votre problème

Écrit par : Mayol 19 Nov 2020, 09:00

Merci. Bien vu.

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)