8768 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai cette function qui fonctionne très bien quand ma chainre de balise est ainsi.
[ADC_START][SDP]1[GUICHET]2[DEM]3[USER_CMDB_DIF_NON]4[[DEM_PDT_PCF < ASSET_XXX> < TPX_1>]

<?PHP
function precedent()
{
    echo 'function';
    // global $reste;
    // $_SESSION['Balises2'] = $GLOBALS[$_SESSION['Balises2']];
    $d = $_SESSION['Balises2'] ;
$regex = "/(.*)[0-9]+\\[.*\\]/";
preg_match($regex, $d, $resultats);
$_SESSION['Balises2'] = $resultats[1];
// $reste contient la chaine sans le dernier morceau
echo $resultats[1];
   
}
?>

Le souci est que parfois ma chaine de balises est comme ça.
[ADC_START][SDP]1[GUICHET]2[DEM]3[USER_CMDB_DIF_NON]4

j'aimerai dire.
si la chaine se termine bien par un crochet "[ADC_START][SDP]1[GUICHET]" alors appliquer la function.
sinon (ne rein faire)
$_SESSION['Balises2'] = $GLOBALS[$_SESSION['Balises2']];

J'ai fait cette condition.

<?PHP
function precedent()
{
    
    //echo 'function';
    // global $reste;
    // $_SESSION['Balises2'] = $GLOBALS[$_SESSION['Balises2']];
    $d = $_SESSION['Balises2'] ;
    if (strpos($d, '[""]') !== false){
$regex = "/(.*)[0-9]+\\[.*\\]/";
preg_match($regex, $d, $resultats);
$_SESSION['Balises2'] = $resultats[1];
// $reste contient la chaine sans le dernier morceau
echo $resultats[1].'function IF';
}
 else{
$_SESSION['Balises2'] = $d;
 echo $d.'funtion ElseIF';
 }
   
}
?>

Mais cela fait rentrer que dans le else.
Merci
wisefun77 a écrit :

j'aimerai dire.
si la chaine se termine bien par un crochet "[ADC_START][SDP]1[GUICHET]" alors appliquer la function.
sinon (ne rein faire)


tu as substr pour ça .
substr("[ADC_START][SDP]1[GUICHET]", -1); // retourne "]" 


et tu peux donc tester cela facilement
Bonjour Jencal,
C'est super ta solution.
Mais j'ai osé me lancer dans un array.
Je suis nul en array.
:
<?php

$d = '[ADC_START][SDP]1[GUICHET]2[DEM]3[USER_CMDB_DIF_NON]4[[DEM_PDT_PCF < ASSET_XXX> < TPX_1>]';

// affiche le premier caractère de la chaine $d
echo $d[0]; // [

// affiche le deuxième caractère de la chaine $d
echo $d[1]; // A

// affiche le dernier caractère de la chaine $d
echo $d[strlen($d) - 1]; // ]

if ($d[strlen($d) - 1] === ']') {
  echo 'la chaine $d se termine par un crochet fermant';
} else {
  echo 'la chaine $d ne se termine pas par un crochet fermant';
}


Je cherche des cours pour apprendre les array.
Merci pour tout.
Modérateur
Hello,

wisefun77 a écrit :
Bonjour Jencal,
C'est super ta solution.
Mais j'ai osé me lancer dans un array.
Je suis nul en array.
...
Je cherche des cours pour apprendre les array.


Tu as cet article : Array

Un array, c'est très simple !

Admettons que tu aies une liste de couleurs à stocker dans une variable. Le array (tableau) est pertinent.


<?php
$colors = [
    'bleu',
    'rouge',
    'vert'
];

Il faut comprendre qu'un array est comme un bâtiment pour accéder à une valeur. Donc, tu commences au rez de chaussé (étage 0) et tu montes dans les étages. Par exemple, pour afficher la couleur bleu, tu indiques l'index 0

exemple :

echo $colors[0];

Si tu souhaites afficher la couleur vert, ce sera alors l'index 2 puisque tu as d'abords l'index 0 puis l'index 1

exemple :

echo $colors[2];

Sache que dans un tableau, tu peux mettre n'importe quel type de données.

Maintenant, tu as un autre concept en php sur les tableaux. C'est ce que l'on appelle les tableaux associatifs. L'index n'est plus un nombre, mais une chaine de caractères (la clef) qui sera reliée à une valeur quelconque.
Tu as un utilisateur avec différents attributs tels que :
- prénom
- nom
- age
- taille
- poids
- majeur


$utilisateur = [
    "prenom" => "Jeanne",
    "nom" => "Michu",
    "age" => 54,
    "taille" => 175,
    "poids" => 60,
    "majeur" => true,
];

tu souhaites afficher le prénom et le nom de cette personne, rien de plus simple :

echo $utilisateur['prenom'].' '.$utilisateur['nom'];


De mémoire, en php tu ne peux pas mettre autre chose qu'une chaine de caractère pour la clef. Ce qui n'est pas le cas dans d'autres langages.
Modifié par niuxe (21 Apr 2022 - 17:30)