Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

relever un numero dans une chaine texte

3 réponses
Avatar
mome
Salut tous !

une question à laquelle je ne vois pas la moindre solution poindre, ni
même des mots clés pour la chercher ni encore des fonctions php qui
pourraient m'être utiles, je vous la propose donc :

comment relever un nombre dans un mot (qui a ici toujours la forme
mot_nombre) ?

exemples :
nom_de_l_invite_18
j'aimerais relever dans cet exemple le nombre 18

nom_du_lieu_33
ici c'est le nombre 33 qu je dois retrouver

de façon générale, vous avez compris, comment relever le nombre XX dans
le mot mot_XX ?

merci de votre aide :)

++

--
mome

3 réponses

Avatar
Thibaut Allender
de façon générale, vous avez compris, comment relever le nombre XX dans
le mot mot_XX ?


chercher le position finale de _ avec strrpos() puis faire un petit
substr() à partir de cette position+1 pour avoir le nombre
sinon, en expression reguliere : eregi("_[0-9]{2}$",$var)

--
thibaut allender | freelance | http://capsule.org

Avatar
P'tit Marcel
mome wrote:
comment relever un nombre dans un mot (qui a ici toujours la forme
mot_nombre) ?
exemples :
nom_de_l_invite_18
j'aimerais relever dans cet exemple le nombre 18

de façon générale, vous avez compris, comment relever le nombre XX dans
le mot mot_XX ?



avec une expression régulière :

if(preg_match('`^(w+)_(d+)$`', $mot, $trouve)) {
$lemot = $trouve[1];
$lenombre = $trouve[2];
}


ou plus simplement :

if(($pos = strrpos($mot, '_', -1))
and is_numeric($n = substr($mot, $pos +1)) )
$lenombre = $n;


(pas testé)

Avatar
mome
merci thibaut allender et P'tit Marcel,

on m'a suggéré de renvoyer le nombre entre crochets, ça permet de le
récupérer dans un tableau de données, ce qui est plus simple à gérer...

je note quand même l'utilisation de l'expression reguliere :)

illustation de ce que ça donne :
on POST texte[XX] (XX est un numéro quelconque)

et on récupère par

foreach ($_POST['texte'] as $id => $texte) {
echo "le numéro $id <br>n le texte $texte";
}

merci encore à vous deux et bises à tous ;)

--
mome