Posez votre question Signaler

[ PHP ] Regex ? Ou autre(s) ? [Résolu]

Alexis - Dernière réponse le 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)
Lire la suite 

[ PHP ] Regex ? Ou autre(s) »

14 réponses
Réponse
+0
moins plus
seules les valeurs changent, ou le calcul aussi ?
Ajouter un commentaire
Réponse
+0
moins plus
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)
Alexis - 15 juin 2011 à 00:28
Merci à toi, je test tout ça demain, je tiens au courant, cependant, le topic reste ouvert ;)
Templier Nocturne- 15 juin 2011 à 00:28
ok, bonne nuit et bon courage ;)
Alexis - 15 juin 2011 à 12:47
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.
Ajouter un commentaire
Réponse
+0
moins plus
$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) :)
Ajouter un commentaire
Réponse
+0
moins plus
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]; 
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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 :) !
Templier Nocturne- 15 juin 2011 à 15:43
ben j'ai utilisé aucune regex XD
Alexis - 15 juin 2011 à 17:12
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.
Templier Nocturne- 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)
Ajouter un commentaire
Ce document intitulé « [ PHP ] Regex ? Ou autre(s) ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?