Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/02/2012, à 04:44

nandayo

aide pour une reg expr php...

salut à tous,

je galère comme un con pour un truc tout bête : j'ai une chaine de ce genre :

blablabla -0.66% blabla

Je veux récupérer dans une variable le nombre -0.66 (sans le %).

Actuellement, en m'aidant du site RegExr, j'ai fait ça :

if(preg_match('/[0-9]{1,2}.[0-9]{1,2}%/',$machaine, $matches))
    {
            echo 'Le nombre est '. $matches[0].'<br>';
    }

Il rentre bien dans la boucle, mais je n'arrive pas à isoler le % pour ne garder qu'un nombre... il doit manquer un petit truc... ?


A terme, je voudrai récupérer tous les nombres de ce genre dans une chaine qui en contiendra plusieurs ; j'utiliserai preg_match_all, qui les rangera successivement dans $matches[1],$matches[2], etc., si j'ai bien compris, mais de ce que j'ai pu essayer ce n'est pas si simple, doit falloir adapter l'expression...

Merci d'avance pour votre aide !

Dernière modification par nandayo (Le 08/02/2012, à 04:56)


Plus de feedback dans le brainstorm et plus facilement ? --> http://brainstorm.ubuntu.com/idea/18056/

Hors ligne

#2 Le 08/02/2012, à 04:54

sputnick

Re : aide pour une reg expr php...

Salut :


<?php

$machaine = "blablabla -0.66% blabla";

preg_match('/\s(-?\d+\.\d+)%/', $machaine, $matches); 

echo $matches[1];
?>

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 08/02/2012, à 05:03

sputnick

Re : aide pour une reg expr php...

Et pour le preg_match_all :


$ cat src
blablabla -0.66% blabla
blablabla 0.97% blabla
blablabla -1.28% blabla
 
$ cat php_fic 
<?php

$fic = file_get_contents("./src");

preg_match_all('/\s(-?\d+\.\d+)%/', $fic, $matches); 

foreach ($matches[1] as $m) {
        echo "$m\n";
}
?>

$ php php_fic
-0.66
0.97
-1.28

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 08/02/2012, à 05:05

nandayo

Re : aide pour une reg expr php...

sputnick a écrit :

Salut :


<?php

$machaine = "blablabla -0.66% blabla";

preg_match('/\s(-?\d+\.\d+)%/', $machaine, $matches); 

echo $matches[1];
?>

Merci ; bizarrement ça marche avec la phrase que j'ai mise (blabla), mais pas avec la vraie chaine que je dois traiter :

<span class="tab">+2.09%</span>        </td>

Là le code ne marche pas hmm

Le mien était si loin que ça de ce qu'il faut faire ? Ton expression me semble si différente de la mienne... hmm



edit : merci pour le all ! je regarderai ça quand j'aurai réglé le problème avec une seule chaine smile
edit 2: sans déconner on peupt exécuter des scripts php dans un terminal, je savais même pas ! C'est trop bon !!!

Dernière modification par nandayo (Le 08/02/2012, à 05:12)


Plus de feedback dans le brainstorm et plus facilement ? --> http://brainstorm.ubuntu.com/idea/18056/

Hors ligne

#5 Le 08/02/2012, à 05:19

sputnick

Re : aide pour une reg expr php...

Tu précise pas assez ce que tu veut faire. On a jamais parlé de + et encore mois de parser du HTML avec du PHP, ce qui ne se fait pas. Il existe des librairies pour cela. Sois plus précis.

Une regex, c'est comme un clef, ca match que les critères que tu aura choisit, c'est pas "magique".

Dans le nouveau cas, il suffit d'afficher en non HTML pour avoir la valeur !


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 08/02/2012, à 05:23

nandayo

Re : aide pour une reg expr php...

Ah oui désolé, ça me paraissait évident (et surtout je pensais pas que ça changeait quoi que ce soit, le code html c'est un texte comme un autre me semblait-il...) : c'est dans du code html que je cherche l'expression en effet.

Je vais chercher une fonction php qui transforme du code html en texte alors.

edit : et non en fait le + n'est pas important, je veux juste récupérer un nombre signé, donc un - s'il est négatif, et sinon le nombre seul suffit...

Dernière modification par nandayo (Le 08/02/2012, à 05:30)


Plus de feedback dans le brainstorm et plus facilement ? --> http://brainstorm.ubuntu.com/idea/18056/

Hors ligne

#7 Le 08/02/2012, à 05:44

sputnick

Re : aide pour une reg expr php...

La doc PHP est très bien faite. on tape php.net/terme recherché

http://php.net/html


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#8 Le 08/02/2012, à 14:22

nandayo

Re : aide pour une reg expr php...

Oui j'utilise la doc bien sûr, mais c'est parfois un peu austère...

J'ai fini par réussir, mais pas avec ton expression bizarrement... peut-être qu'elle n'est pas adapté à ce que je veux faire ; j'ai réussi avec

/(-?[0-9]{1,2}.[0-9]{1,2})%/

Dernière modification par nandayo (Le 08/02/2012, à 14:22)


Plus de feedback dans le brainstorm et plus facilement ? --> http://brainstorm.ubuntu.com/idea/18056/

Hors ligne

#9 Le 08/02/2012, à 20:26

sputnick

Re : aide pour une reg expr php...

C'est pas du tout austère et de plus, la plupart des pages existe en Français, il faut quoi de plus ?

La différence (que tu aurais pu comprendre en cherchant un, peu) est que j'utilise la notation PCRE et toi la BRE (basic regex)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#10 Le 09/02/2012, à 02:14

nandayo

Re : aide pour une reg expr php...

Pourquoi cette "agressivité" ? J'ai utilisé la doc et internet, j'avais 20 sous FF rien que pour les expressions régulière, si je te le dis c'est que c'est vrai,à quoi ça sert d'insinuer que je me pointe pour me faire assister sans avoir fait de recherche ?...

Il est impossible de trouver ce dont tu parles en cherchant un peu comme tu dis, pour trouver ce genre de chose il faut déjà savoir que ça existe, on peut pas tomber dessus par hasard en feuilletant l'aide, la preuve, c'est que j'ai jamais lu PCRE et BRE et ces termes ne sont présents sur aucun des 20 onglets que j'avais ouverts, dont certains sont des tutos sur les bases même des expr reg en php...

Enfin bon, l'essentiel c'est que j'ai fini par y arriver, et merci pour ton aide smile

Dernière modification par nandayo (Le 09/02/2012, à 02:15)


Plus de feedback dans le brainstorm et plus facilement ? --> http://brainstorm.ubuntu.com/idea/18056/

Hors ligne

#11 Le 09/02/2012, à 03:15

sputnick

Re : aide pour une reg expr php...

nandayo a écrit :

Pourquoi cette "agressivité" ?

C'est assez subjectif, je ne t'agresse pas, mais je suis direct. Je t'ai donné plus que des pistes, voilà l'essentiel.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne