$equation= str_replace ( 'racine',"sqrt",explode (' ', $str_equation)); //J'ai aussi essayé avec str_replace $equ= strtr ($equation[0],"²","0"); /*La valeur retournée est la même que quand je n'ai pas appliqué la dernière ligne de code*/ echo $equ;
$equ= strtr ($equation[0],"²","");
$equation= str_replace ( 'racine',"sqrt",explode (' ', $str_equation)); echo ($equation[0].'<br />'); $split_carre= explode ('²',$equation[0]); echo $split_carre[0];
(\w²|\([\w+\-\*\/]*\)²)
<?php //affichage des erreurs php error_reporting(E_ALL); function toPow($matches){ $strSans2 = str_replace("²","",$matches[0]); return "pow($strSans2,2)"; } function FormatstringPow($str){ $pattern = "(\w²|\([\w+\-\*\/]*\)²)"; $sortie = preg_replace_callback($pattern,"toPow", $str); return $sortie; } $test1 = "sqrt(a)*b²+c"; echo "<br>".$test1." =>>".FormatstringPow($test1); $test2 = "sqrt(a)*(b+z-x/2)²+c"; echo "<br>".$test2." =>>".FormatstringPow($test2);
Au vu de mon niveau actuel je dois admettre ne pas connaitre grand chose aux regexlaisse à penser qu'il n'a pas dû tester ton code....
function toPow($matches){ $strSans2 = str_replace("²","",$matches[0]); return "pow($strSans2,2)"; } function FormatstringPow($str){ $pattern = "(\w²|\([\w+\-\*\/]*\)²)"; $sortie = preg_replace_callback($pattern,"toPow", $str); return $sortie; } echo "<br />".$equation[0]." =>>".FormatstringPow($equation[0]);
Mais sinon j'obtiens sqrt(a)*b²+c . sachant qu'a, b, et c sont des nombres random
sqrt(a)*b²+c =>> sqrt(a)*pow(b,2)+c
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<?php //Pour le PHPSESSID. $session= stream_context_create(array("http" => array ("header" => "Cookie: ***"))); //récupère la phrase : racine(nbRandom1)*nbRandom2²+nbRandom3 est l'équation à résoudre $str_equation= file_get_contents('https://www.****.org/epreuves/prog/prog4.php',false,$session); //remplace le mot racine par sqrt et prélève l'équation $equation= str_replace ( 'racine','sqrt',explode (' ', $str_equation)); //La fonction que tu m'as demandé d'utiliser function toPow($matches){ $strSans2 = str_replace("²","",$matches[0]); return "pow($strSans2,2)"; } function FormatstringPow($str){ $pattern = "(\d{1,}²|\([\d{1,}+\-\*\/]*\)²)"; $sortie = preg_replace_callback($pattern,"toPow", $str); return $sortie; } //le test avec la fonction echo "<br />".$equation[0]." =>>".FormatstringPow($equation[0]); //Et voici deux autres fonctions que j'ai eu le loisir de tester : /*echo ($equation[0].'<br />'); $split_carre= explode ('²',$equation[0]); echo $split_carre[0];*/ /* $equ= str_replace ('²','',$equation[0]); echo $equ ; */
str_equation : racine(5)*1²+336 est l'équation à calculer.
equation : Array ( [0] => sqrt(5)*1²+336 [1] => est [2] => l'équation [3] => à [4] => calculer. )
equation[0] : sqrt(5)*1²+336
Resultat
sqrt(5)*pow(1,2)+336
<?php //La fonction que tu m'as demandé d'utiliser function toPow($matches){ $strSans2 = str_replace("²","",$matches[0]); return "pow($strSans2,2)"; } function FormatstringPow($str){ $pattern = "(\d{1,}²|\([\d{1,}+\-\*\/]*\)²)"; $sortie = preg_replace_callback($pattern,"toPow", $str); return $sortie; } //$url = "https://www.newbiecontest.org/epreuves/prog/prog4.php"; //$str_equation= file_get_contents($url,false,$session); $str_equation = "racine(5)*1²+336 est l'équation à calculer."; echo "<br>str_equation : "; print_r($str_equation); //remplace le mot racine par sqrt et prélève l'équation $equation= str_replace ( 'racine','sqrt',explode (' ', $str_equation)); echo "<br>equation : "; print_r($equation); echo "<br>equation[0] : "; print_r($equation[0]); echo "<br><br>Resultat <br> "; echo FormatstringPow($equation[0]);
str_equation : racine(1)*8²+505 est l'équation à calculer. equation : Array ( [0] => sqrt(1)*8²+505 [1] => est [2] => l'équation [3] => à [4] => calculer. ) equation[0] : sqrt(1)*8²+505 Resultat sqrt(1)*8²+505
10 sept. 2016 à 15:42
10 sept. 2016 à 16:34
Une recherche sur la position du caractère puis "recule" dans le texte tant qu'on trouve des chiffres devrait fonctionner
10 sept. 2016 à 18:15