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
Nicolas
Oui excusez moi, ma variable prends contenir plusieurs chiffres et donner
par exemple $variable,08,10,11

merci !

"Thibaut Allender" a écrit dans le message de
news: 3f731746$0$20640$
"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 ;)



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

Je m'auto-corrige en decale puisque ce ng a la mauvaise idee d'etre modere :
if(strpos(" ,$machaine,",",15,")) echo "j'ai trouvé 15 dans machaine";

vala c plus joli

--
Ampac
Avatar
Olivier Miakinen
if(strpos(" ,$machaine,",",15,")) echo "j'ai trouvé 15 dans machaine";


Oui, c'est vraiment le plus simple.

Avatar
dominique
kMoog wrote:
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.


et comment tu fais pour matcher 15 et non 1154 ou 150 ou ...

--
Dom

Avatar
Thibaut Allender
"Ampac" wrote in message
news:3f7366f0$0$13290$

C'est beau la mauvaise foi :-)


j'aurais tout suite pondu la bonne regexp si je ne m'etais pas embrouillé

Dans ce cas, une simple comparaison suffisait
----> if($chaine=="15")


c'est sur, mais c'est cette histoire de strpos qui m'a induit en erreur

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.


ici on ne peut pas faire sans, car comme indiqué par la suite par l'auteur
de la question lui meme, avec strpos() on ne peut pas distinguer "150" de
"15" (son exemple etait donc mauvais)

a+

Avatar
Olivier Miakinen

ici on ne peut pas faire sans, car comme indiqué par la suite par l'auteur
de la question lui meme, avec strpos() on ne peut pas distinguer "150" de
"15" (son exemple etait donc mauvais)


N'as-tu pas lu l'autre réponse d'Ampac ? Il suffit de rajouter une
virgule au début et à la fin des deux chaînes, et roule ma poule !

strpos(',' . $chaine . ',', ',15,')

ou encore :

strpos(",$machaine,", ",15,")

Avatar
Thibaut Allender
"Ampac" wrote in message
news:3f736921$0$13279$
Je m'auto-corrige en decale puisque ce ng a la mauvaise idee d'etre modere
:

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

vala c plus joli


moi je trouve cette solution batarde
c'est mettre une rustine la ou il n'y a pas besoin d'en mettre
ce genre de "systeme D", c'est bien quand il n'existe aucune autre solution
elegante

de plus, on ne peut appliquer ca que dans ce cas precis, parce qu'on a des
virgules de chaque coté... si on cherche "15" dans un texte, et pas "150",
sans savoir ce qui se trouvera a droite et gauche de la chaine recherchee,
on peut toujours courir avec strpos()...

a+

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

de plus, on ne peut appliquer ca que dans ce cas precis, parce qu'on
a des virgules de chaque coté... si on cherche "15" dans un texte, et
pas "150", sans savoir ce qui se trouvera a droite et gauche de la
chaine recherchee, on peut toujours courir avec strpos()...


Hahum, strpos() repondait simplement a la question posee.
Ca n'a rien d'une solution batarde dans le cas ICI present. Tu sais ce que
c'est que l'optimisation ? Parce que les expressions regulieres c'est
toujours plus lourd que de la simple comparaison de chaine. Fais des tests
en boucle et compare les temps de traitement, tu verras bien.

--
Ampac

Avatar
kMoog
"dominique" a écrit dans le message de news:
bl1hkp$2gg7$
kMoog wrote:
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.


et comment tu fais pour matcher 15 et non 1154 ou 150 ou ...

--
Dom


A chaque besoin sa solution.
D'après la demande d'origine, cette situation ne peut pas se présenter.
Mais sinon, dans le cas que tu suggère, il est clair que stristr n'est plus
suffisant.

Chris


Avatar
Nicolas
Merci pour tous vos posts, j'ai opté pour :

<? if(strpos(" ,$s_loisirs,",",16,")) {echo "checked";} ?>>

qui fonctionne à merveille, merci à tous pour vos contributions !

"kMoog" a écrit dans le message de news:
3f75b119$0$13307$
"dominique" a écrit dans le message de news:
bl1hkp$2gg7$
kMoog wrote:
Comment vous vous prenez la tête !!! :o(((
Il faut arrête de vouloir tjrs faire des usines à gaz, les gars ;o)






1 2 3