Verifier si une chaine contient caractere php
fofo73
Messages postés
295
Date d'inscription
Statut
Membre
Dernière intervention
-
fofo73 Messages postés 295 Date d'inscription Statut Membre Dernière intervention -
fofo73 Messages postés 295 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai fait un script qui affiche les interventions du membre sur un forum mais si j'ai une chaine 1,5,3,1,2,7 qui signifie les intervention des membre par leur id,comment pourrais je voir si cette chaine contient l'id 1 par exemple(en php).
comment faire?
merci
J'ai fait un script qui affiche les interventions du membre sur un forum mais si j'ai une chaine 1,5,3,1,2,7 qui signifie les intervention des membre par leur id,comment pourrais je voir si cette chaine contient l'id 1 par exemple(en php).
comment faire?
merci
A voir également:
- Php verifier si un caractere existe dans une chaine
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Verifier compatibilite windows 11 - Guide
- Chaine tnt gratuite sur mobile - Guide
5 réponses
Avec des expressions régulières :
<?php $str = "3,1,2,4,3,5,7,9,8,1,54,5,30,23,33,3"; $num = "3"; $pattern = "#(?:^(".$num.")[^0-9])|(?:[^0-9](".$num.")[^0-9])|(?:[^0-9](".$num.")$)#"; // cas milieu, debut et fin de chaine if(preg_match_all($pattern,$str,$matches)) { echo "la chaine $num a été trouvée ".sizeof($matches[1])." fois\n"; } ?>
Salut !
@ monkaarnaud :
je ne vois pas ce qu'il y a de plus à dire. J'ai parfaitement compris.
fofo73 :
Si tu es sûr que ta chaine contient des ID qui sont séparés par une virgule (dans le cas contraire dis-le moi), alors voici un code qui au final renvoi un booléen (true / false).
$id vaut l'ID à rechercher, $chaine est la chaine qui contient les ID, $trouve vaudra true ou false pour la condition "ID trouvé ou pas".
Voila ;)
Code :
@ monkaarnaud :
je ne vois pas ce qu'il y a de plus à dire. J'ai parfaitement compris.
fofo73 :
Si tu es sûr que ta chaine contient des ID qui sont séparés par une virgule (dans le cas contraire dis-le moi), alors voici un code qui au final renvoi un booléen (true / false).
$id vaut l'ID à rechercher, $chaine est la chaine qui contient les ID, $trouve vaudra true ou false pour la condition "ID trouvé ou pas".
Voila ;)
Code :
<?php $id = 1; $chaine = "1,5,3,1,2,7"; // Initialisation $trouve = false; $tableau_chaine = explode(",", $chaine); foreach($tableau_chaine as $id_actuel){ if($id_actuel == $id){ $trouve = true; } } // Au final if($trouve){ echo "L'ID ".$id." a été trouvé !"; } else{ echo "L'ID ".$id." n'a pas été trouvé..."; } ?>
Bonsoir
Je ne comprends pas trop ta question.
Mais en php; pour vérifier le contenu d'une variable ou d'une chaine, tu as soit echo (pour afficher son contenu) ou par égalité pour comparer son contenu avec 1 par exemple; du genre
if (nom_de_la_chaine == 1) {
on effectue tel traitement
}
else {
on effectue un autre trainement
}
Mais entre temps si c'est pas la solution à ton problème; je te prie d'être plus explicite.
Je ne comprends pas trop ta question.
Mais en php; pour vérifier le contenu d'une variable ou d'une chaine, tu as soit echo (pour afficher son contenu) ou par égalité pour comparer son contenu avec 1 par exemple; du genre
if (nom_de_la_chaine == 1) {
on effectue tel traitement
}
else {
on effectue un autre trainement
}
Mais entre temps si c'est pas la solution à ton problème; je te prie d'être plus explicite.
Salut,
en ce qui concerne les chaînes de caractères, php dispose d'un nombre conséquent de fonctions déjà toutes faites qui résolvent de nombreux problèmes. Inutile de réinventer la roue.
Pour exemple ce bout de code que j'ai à peine adapté (traduit) et que l'on trouve dans la documentation en ligne:
CODE 1
CODE 2 : OBSOLETE concerné par le commentaire suivant
Tu pourras jeter un coup d'oeil avec intérêt dans la documentation.
https://www.php.net/manual/fr/ref.strings.php
Bon courage.
P.S.:
Le code obsolète a été modifié suite à une remarque pertinente malgré son ton sarcastique plutôt mal venu.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein
en ce qui concerne les chaînes de caractères, php dispose d'un nombre conséquent de fonctions déjà toutes faites qui résolvent de nombreux problèmes. Inutile de réinventer la roue.
Pour exemple ce bout de code que j'ai à peine adapté (traduit) et que l'on trouve dans la documentation en ligne:
CODE 1
<?php $chaine = "1,5, 13, 20, 53,1,33, 43, 5,55,43, 13 ,30,7"; $valeur = '3'; //supprimer les espaces si jamais $fmt_chaine = str_replace(' ','', $chaine); // Si valeur en début de chaîne $pos_start = (stripos($fmt_chaine, $valeur.',') == 0); // Si valeur en milieu de chaine $pos_mid = (stripos($fmt_chaine, ','.$valeur.',') !== false); // Si valeur en fin de chaîne $pos_end = (stripos($fmt_chaine, ','.$valeur) == strlen($fmt_chaine)); if ($pos_start || $pos_mid || $pos_end) { echo "L'ID ($valeur) a été trouvé dans ($chaine)"; } else { echo "Désolé, aucune occurrence de ($valeur) dans ($chaine)"; } ?>
CODE 2 : OBSOLETE concerné par le commentaire suivant
<?php $chaine = "1,5,3,1,2,7"; // Chaîne où s'effectue la recherche $valeur = '3'; // Valeur à rechercher dans la chaîne $pos = stripos($chaine, $valeur); if ($pos === false) { // Vérifie que $pos est de type booléen et vaut 'false' echo "Désolé, ($valeur) ne se trouve pas dans ($chaine)"; } else { echo "Une valeur de ($valeur) a été trouvée dans ($chaine) comme caractère numéro ($pos)"; } ?>
Tu pourras jeter un coup d'oeil avec intérêt dans la documentation.
https://www.php.net/manual/fr/ref.strings.php
Bon courage.
P.S.:
Le code obsolète a été modifié suite à une remarque pertinente malgré son ton sarcastique plutôt mal venu.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein
Tu ne t'étais pas trompé.
J'ai fait une rapide modif. Si tu vois d'autres bugs dessus, merci de les signaler.
Ceci dit, à première vue la solution de Leviathan49 me semble répondre au besoin énoncé.
De plus elle permet de connaître le nombre d'interventions pour l'ID, ce qui - bien que pas demandé ici - pourra être utile par la suite.
J'ai fait une rapide modif. Si tu vois d'autres bugs dessus, merci de les signaler.
Ceci dit, à première vue la solution de Leviathan49 me semble répondre au besoin énoncé.
De plus elle permet de connaître le nombre d'interventions pour l'ID, ce qui - bien que pas demandé ici - pourra être utile par la suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mais oui, mais oui... Continue comme ca et je te donne preg_match() et cela fonctionne.
C'est bien gentil d'aider, mais cela ne résout pas son problème !
Les ID, c'est précis. Avec l'exemple 3, ca fonctionne.
Mais si la chaine contient un ID '30', et que je cherche 3, cela m'affiche qu'il est trouvé !
Si c'était le but j'aurais donné un bête preg_match() dès le début.
Tu comprends ?
Bye ;)
C'est bien gentil d'aider, mais cela ne résout pas son problème !
Les ID, c'est précis. Avec l'exemple 3, ca fonctionne.
Mais si la chaine contient un ID '30', et que je cherche 3, cela m'affiche qu'il est trouvé !
Si c'était le but j'aurais donné un bête preg_match() dès le début.
Tu comprends ?
Bye ;)
Mais oui, mais oui... Continue comme ca et je te donne preg_match() et cela fonctionne.
Alors qu'attends-tu ?
C'est bien gentil d'aider, mais cela ne résout pas son problème !
ça il me semble que c'est encore à fofo73 de le dire.
Les ID, c'est précis. Avec l'exemple 3, ca fonctionne.
Mais si la chaine contient un ID '30', et que je cherche 3, cela m'affiche qu'il est trouvé !
Ah ben voici une remarque pertinente !
Je m'étais déjà aperçu du problème au moment du post et de l'ai édité. Néanmoins j'ai gardé mon code original afin que ton commentaire aie encore un sens.
A bon entendeur.
Alors qu'attends-tu ?
C'est bien gentil d'aider, mais cela ne résout pas son problème !
ça il me semble que c'est encore à fofo73 de le dire.
Les ID, c'est précis. Avec l'exemple 3, ca fonctionne.
Mais si la chaine contient un ID '30', et que je cherche 3, cela m'affiche qu'il est trouvé !
Ah ben voici une remarque pertinente !
Je m'étais déjà aperçu du problème au moment du post et de l'ai édité. Néanmoins j'ai gardé mon code original afin que ton commentaire aie encore un sens.
A bon entendeur.