OVH Cloud OVH Cloud

Trouver un chiffre dans une variable

24 réponses
Avatar
Nicolas
Bonsoir

Dans une variable $chiffres qui peut etre égale à 04,05,10,15

Comment savoir si 15 se trouve dans ma variable ?

Merci à tous !

10 réponses

1 2 3
Avatar
Ampac
Dans news:3f6f5dfd$0$27047$,
Nicolas raconte :

Dans une variable $chiffres qui peut etre égale à 04,05,10,15
Comment savoir si 15 se trouve dans ma variable ?


fonction strpos()

--
Ampac

Avatar
Jedi121
Nicolas wrote:
Bonsoir

Dans une variable $chiffres qui peut etre égale à 04,05,10,15

Comment savoir si 15 se trouve dans ma variable ?


Lire la doc PHP...
Pour vous simplifier la vie je vous donne l'extrait mais téléchargez au plus
vite la doc PHP et lisez là.

strpos
(PHP 3, PHP 4 )

strpos -- Recherche la première occurrence d'un caractère dans une chaîne.
Description
int strpos ( string haystack, string needle [, int offset])


strpos() retourne la position numérique de la première occurrence de needle dans
la chaîne haystack. Contrairement à strrpos(), needle peut être une chaîne.

Si needle n'est pas trouvée, retourne FALSE.

Note : Il est facile de confondre la valeur de retour "caractère trouvé à la
position 0" et "caractère introuvable". Voici comment faire la différence :


<?php
// PHP 4.0b3 et plus récent :
$pos = strpos($machaine, "b");
if ($pos === FALSE) { // note: trois signes égal
// non trouvé
}
// versions plus anciennes que 4.0b3:
$pos = strpos("b", $machaine);
if (is_string($pos) && !$pos) {
// non trouvé
}
?>




Si needle n'est pas une chaîne, elle est convertie en entier, et utilisée comme
la valeur ASCII d'un caractère.

L'argument optionnel offset permet de préciser le caractère à partir duquel
chercher, dans haystack. La position doit être relative au début de la chaîne
haystack.

Avatar
Nicolas
Merci beaucoup à vous 2 !

"Jedi121" a écrit dans le message de news:
3f6fef81$0$2795$
Nicolas wrote:
Bonsoir

Dans une variable $chiffres qui peut etre égale à 04,05,10,15

Comment savoir si 15 se trouve dans ma variable ?




Avatar
dominique
Thibaut Allender wrote:
"Jedi121" wrote in message
strpos est peut etre plus facilement applicable quand on debut, mais ca ne
vaut pas une bonne expression reguliere :)

<?php
if (eregi("^15$",$machaine)) {
// trouvé
}
?>

n'oubliez pas les caracteres ^ (debut de ligne) et $ (fin de ligne) si vous
ne voulez pas que "150" soit aussi trouvé



je viens de jetter 1 oeil et je ne comprends comment cette regexp peut
fonctionner sans au prealable decouper la chaine en blocs de chiffres.
Si je reprends l'exemple de Nicolas : 04,05,10,15 la regexp ^15$ ne
marchera pas.

Je propose plutot de faire /D15(D|$)/ avec un preg_match

--
Dom

Avatar
Thibaut Allender
"dominique" wrote in message
news:bku7j3$7kk$
je viens de jetter 1 oeil et je ne comprends comment cette regexp peut
fonctionner sans au prealable decouper la chaine en blocs de chiffres.
Si je reprends l'exemple de Nicolas : 04,05,10,15 la regexp ^15$ ne
marchera pas.


um... moi j'ai compris la problematique comme ceci :
la chaine contient 04 ou 05 ou 10 ou 15
dans ce cas, ma regexp fonctionne ;)

Je propose plutot de faire /D15(D|$)/ avec un preg_match


mais j'ai effectivement peut etre mal compris !
si la chaine contient "04,05,10,15" alors on peut faire ca aussi en regexp

<?php
$machaine = "04,05,10,15";
if (eregi("(^|,)*15(,|$)+",$machaine)) {
// trouvé;
}
?>

a+

Avatar
Thibaut Allender
"Thibaut Allender" wrote in message
news:3f731746$0$20640$

if (eregi("(^|,)*15(,|$)+",$machaine)) {


je dirais meme "+" ;)

eregi("(^|,)+15(,|$)+",$machaine)

car devant le chiffre, il y aura toujours au moins un debut de ligne ou une
virgule...
avec la premiere que j'ai donné "215" aurait aussi ete trouvé

Avatar
Ampac
Dans news:3f731746$0$20640$,
Thibaut Allender raconte :

um... moi j'ai compris la problematique comme ceci :
la chaine contient 04 ou 05 ou 10 ou 15
dans ce cas, ma regexp fonctionne ;)


C'est beau la mauvaise foi :-)
Dans ce cas, une simple comparaison suffisait
----> if($chaine=="15")

NB : préférer pour le problème énoncé au début dans ce thread strpos()
Les expressions régulières c'est bien beau, mais quand on peut faire sans,
comme ici, c'est mieux, on y gagne en temps d'éxécution.

--
Ampac

Avatar
Ampac
Dans news:3f700684$0$20171$,
Thibaut Allender raconte :

n'oubliez pas les caracteres ^ (debut de ligne) et $ (fin de ligne)
si vous ne voulez pas que "150" soit aussi trouvé

d'ailleurs, strpos a vite ses limites, on ne peut pas distinguer
"150" de "15", ils seront trouvés a la meme position.


N'importe nawak, suffit par exemple d'ajouter temporairement une virgule en
fin de chaine et une autre en debut avec une espace.
et apres tu fais le strpos sur ,15,

ca peut donner :
if(strpos(" ,$machaine,","15")) echo "j'ai trouvé 15 dans machaine";

--> a mon sens mieux vaut eviter d'avoir recours a toute la puissance des
expressions regulieres pour un cas aussi bete que celui-ci

--
Ampac

Avatar
kMoog
Eh bien !!!
Comment vous vous prenez la tête !!! :o(((
Il faut arrête de vouloir tjrs faire des usines à gaz, les gars ;o)

Bcp plus simple et très efficace :
if (stristr($chiffres,"15")) {
echo "Valeur 15 trouvée." ;
}

Marchera SYSTEMATIQUEMENT.


"Nicolas" a écrit dans le message de news:
3f6ffb9b$0$20182$
Merci beaucoup à vous 2 !

"Jedi121" a écrit dans le message de news:
3f6fef81$0$2795$
Nicolas wrote:
Bonsoir

Dans une variable $chiffres qui peut etre égale à 04,05,10,15

Comment savoir si 15 se trouve dans ma variable ?






Avatar
Olivier Miakinen

if (eregi("(^|,)*15(,|$)+",$machaine)) {


je dirais meme "+" ;)

eregi("(^|,)+15(,|$)+",$machaine)

car devant le chiffre, il y aura toujours au moins un debut de ligne ou une
virgule...
avec la premiere que j'ai donné "215" aurait aussi ete trouvé


Je suis d'accord, mais tu peux même supprimer les deux « + » (tu t'en
fiches qu'il y ait ou non deux virgules de suite) :

eregi("(^|,)15(,|$)",$machaine)


1 2 3