Page 1 sur 1

Condition IF dans une function

Posté : 21 avr. 2022, 09:28
par wisefun77
Bonjour,
J'ai cette function qui fonctionne très bien quand ma chainre de balise est ainsi.

Code : Tout sélectionner

[ADC_START][SDP]1[GUICHET]2[DEM]3[USER_CMDB_DIF_NON]4[[DEM_PDT_PCF < ASSET_XXX> < TPX_1>]

Code : Tout sélectionner

<?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.

Code : Tout sélectionner

[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)

Code : Tout sélectionner

$_SESSION['Balises2'] = $GLOBALS[$_SESSION['Balises2']];
Je ne sais pas inclure des if dans une function.
Merci.

Re: Condition IF dans une function

Posté : 21 avr. 2022, 09:30
par wisefun77
bonjour,
J'ai fait cette condition.

Code : Tout sélectionner

<?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

Re: Condition IF dans une function

Posté : 21 avr. 2022, 12:48
par ynx
Bonjour Wisefun,

Ta condition strpos($d, '[""]') !== false ne semble en effet pas correcte (elle sera toujours false). Avec cette instruction, strpos() cherche si la chaine '[""]' est présente dans la variable $d, or cette chaine n'existe pas dans cette variable.

Si tu utilises PHP 8, tu peux utiliser la nouvelle fonction str_ends_with() pour vérifier si la chaine se termine par un crochet fermant ou non :
https://www.php.net/manual/fr/function. ... s-with.php

Si tu utilises une version antérieur de PHP, tu peux aussi accéder aux caractères d'une chaine en y accédant comme un tableau, par exemple :
<?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';
}

Re: Condition IF dans une function

Posté : 21 avr. 2022, 13:52
par wisefun77
Bonjour ynx,
Tu es un devin.
Justement je cherche comment transformer cette chaine en tableau, pour pouvoir par la suite classer correctement les balises.
Donc je vais suivre ton conseil.
Et ta solution fonctionne à merveille pour la function. =D> =D> =D> =D>
Merci.