8723 sujets

Développement web côté serveur, CMS

Bonjour,
Ce code fonctionne bien

<?php
// setlocale(LC_TIME, 'fr_FR.UTF8');
// setlocale(LC_TIME, 'fr_FR');
// setlocale(LC_TIME, 'fr');
setlocale(LC_TIME, 'fra_fra');
// Set session variables
$page= '12';
$_SESSION['Balises2'] = '[PDT][TPX_21][RDVNON]';
If (isset($_SESSION['Balises2'])){
    $date = strftime('[%d/%m/%y-%H:%M]');
$version = "[Version_2.02]";
$code= "[ADC_END]";

$num = $_SESSION['Balises2'];
       if((strpos($num, '[RDVNON]') !== false)){
        $numero = '[DE12345]';
        $_SESSION['Numero'] = $numero;
        
 $_SESSION["Balises2"] = $_SESSION["Balises2"]. $_SESSION['Numero'] . $date . $version . $code;
 echo $_SESSION["Balises2"];
}

}

Mais quand je test avec
  if((strpos($num, '[RDVNON]&&[TPX_21]&&[PDT]') !== false))

OU
if((strpos($num, '[RDVNON]'&&'[TPX_21]'&&'[PDT]') !== false))

Plus rien ne s'affiche.
C'est quoi que je n'ai pas compris?
Merci.
Modérateur
Hello,

RTFM !

php a écrit :

strpos
Cherche la position de la première occurrence dans une chaîne


Ce qui veut dire qu'avec une sous-chaine de caractères, tu cherches sa position dans une chaine de caractère.

1. ton !== false est sémantique faux puisque strpos te retourne un int
2. regarde la signature de la fonction (il n'y a pas de booleen)
3. Si tu souhaites simplement savoir si une sous chaine de caractères est dans la chaine de caractère, strstr() suffit amplement. D'ailleurs de mémoire, sa valeur de retour est un bool.
Modifié par niuxe (22 Apr 2022 - 14:37)
Bonjour niuxe,
Merci pour tes infos.
J'ai testé avec strstr(), mais cela affiche toujours la même chose, même si la balise n'existe pas.
Modérateur

<?php
$num = '[PDT][TPX_21][RDVNON]';
$search = '[RDVNON]';

if(strstr($num, $search)){
  echo 'ok';
}else{
  echo 'ko';
}
?>