[ PHP ] Regex ? Ou autre(s) ?

Résolu/Fermé
Alexis - Modifié par Alexis le 15/06/2011 à 00:25
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 - 15 juin 2011 à 18:01
Bonjour,
Je suis programmeur, et cette fois ci, je code en PHP. Mais mon problème est là :
je suis confronté à un challenge donné par un de mes collègues, et je dois me connecter à une page en local, pour récupérer les réponses d'une équation sur la page, je m'explique :
La page est sous cette forme ( très courte ) :
"Salut, écrit dans un fichier txt la réponse de 23*97?(9) Bonne chance !"
Le calcule étant actualisé à chaque rechargement de page, mais reste sous la même forme.
Je sais TOTALEMENT comment mi prendre, et donc, ce n'est pas pour ça que je viens chercher de l'aide. Je viens, car je cherche à prendre par exemple 23 pour le stoker dans une variable, puis 97 dans une autre etc... Sachant que à chaque réactualisation de page, le calcule change. Je sais comment faire pour tout le reste, ne vous inquiétez pas ;) merci.

Cordialement, Alexis.
En espérant avoir tout dit :)

Edit : Oups, j'ai oublié un ² ( carré ) à 23, ce qui donne donc :
23²*97racine(9)


A voir également:

7 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 00:00
seules les valeurs changent, ou le calcul aussi ?
0
Les valeurs, la structure de l'équation restera la même : x*xracine(x)
Excusez moi, la ? est le symbole racine carré qui n'est pas accepté ;)

Edit : Oups, j'ai oublié un ² ( carré ) à 23, ce qui donne donc :
23²*97racine(9)
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 00:24
dans ce cas, tu peux isoler le calcul avec str_replace()

ensuite, tu remplace le * est le R² par un espace (toujours avec str_replace() )

enfin, tu explose la chaine avec explode() en prenant les espaces en delimiteur :)


tu te retrouve avec tes trois variables :)
0
Merci à toi, je test tout ça demain, je tiens au courant, cependant, le topic reste ouvert ;)
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 00:28
ok, bonne nuit et bon courage ;)
0
Merci, bon j'avoue, je sèche encore un peu, si quelque pouvais par exemple me faire l'exemple pour prendre le 23 par exemple ( sans le ² ! ) en sachant que 23 change à la réactualisation ;)
Cependant, je continue de mon côté.
Cordialement, Alexis.
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 13:56
$montexte = [fichier];
$montexte = str_replace($montexte, 'Salut, écrit dans un fichier txt la réponse de ', '');
$montexte = str_replace(' Bonne chance !', '', $montexte);
$montexte = str_replace('²*', ' ', $montexte);
$montexte = str_replace('R²', ' ', $montexte); (R² à premplacer par le symbole racine carrée)
$val = explode(' ', $montexte)

echo $val[0];
echo $val[2];
echo $val[3];


un truc de ce genre :)

comme ça, tu récupère uniquement tes trois valeurs (string), qu'il te faut traduire en (int) :)
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
15 juin 2011 à 14:20
Ou sinon tu peut essayer avec des regex :
$subject="23²*97racine(9)"
$pattern="#([0-9])+[^0-9]+([0-9])+[^0-9]+([0-9])+#";
preg_match($pattern, $subject, $matches);

echo $matches[1];
echo $matches[2];
echo $matches[3]; 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Encore merci à vous deux, j'ai beau analyser la moindre ligne de code, mais moi et les regex, ça fait deux !! Je ne comprendrais donc jamais rien à celle-ci, challenge échoué ! ;) Je lui dirais, il a gagné, mais cependant, cela m'aurais quand même intéressé de savoir la réponse :p Si ça ne vous dérange pas bien sûr, sinon, je mettrais résolu :)
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 15:29
ben la solution, je te l'ai quasiment donnée :


// 1) on lit le fichier
$montexte = [fichier]; //je ne sais pas lire dans un fichier, flemme de chercher

// 2) on ne conserve que nos valeurs
$montexte = str_replace($montexte, 'Salut, écrit dans un fichier txt la réponse de ', '');
$montexte = str_replace(' Bonne chance !', '', $montexte);
$montexte = str_replace('²*', ' ', $montexte);
$montexte = str_replace('R²', ' ', $montexte); //(R² à premplacer par le symbole racine carrée)

//3) on met les valeurs dans des variables distinctes et on les traduit en nombres
$val = explode(' ', $montexte)

$val1 = (int) $val[0];
$val2 = (int) $val[1];
$val3 = (int) $val[2];

// 4) on fait le calcul
$resu = $val1 * $val1 * $val2 * sqrt($val3);

// 5) on met le résultat dans un fichier
[fichier] = $resu; // et non, je ne sais pas non plus ecrire dedans...
0
Oua, quasiment donnée, c'est vrai, mais comme dit précédemment, je ne suis vraiment pas doué avec les regex, c'est compliqué je trouve, bon, si tu veux, je vais mettre la suite, peut être ça servira pour certain personne ;) :

// On défini la variable pour valeur le fichier où l'on doit écrire
$fichier = fopen("fichier.txt", "a");
// On écrit dedans avec fwrite
fwrite($fichier, $resu);
// On referme le fichier avec fclose
fclose($fichier);


Je trouvais la suite beaucoup plus facile :p, donc si je ne me suis pas trompé, ça marche, la seul chose dont je ne suis pas sûr, c'est pour "a". Il me semble que lui ouvre le fichier en lecture et écriture, mais à voir, et "a+" si jamais le fichier n'est pas existant, ça le créera.
Voila, c'est un plaisir d'avoir parlé avec vous :) A la prochaine :) !
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 15:43
ben j'ai utilisé aucune regex XD
0
Il me semblais que str_replace faisait partie des fonction des regex non ? Peut être je me trompe, mais j'ai toujours eu ça en tête, ou du moins, on les utilisent ( associe ) souvent avec les regex. Enfin bon, je me suis toujours mis ça en tête, sans jamais trop me pencher dessus :), la preuve.
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
15 juin 2011 à 18:01
ben str_replace() est super simple d'utilisation, et est parfois vraiment pratique quand on ne sait pas utiliser les regex (nous somme deux sur ce topic =D)
0