Programme avec preg_match

Résolu
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012 - 29 juil. 2008 à 04:58
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 14 août 2008 à 21:16
bonjour, merci de m'aider une autre fois prendant cette semaine, jai un probleme avec preg_match, jai pas pu composé cette chaine exemple: 48°26'58.11"
bon j'explique un peu, je veux charger les trois nombre dans trois variable quand va l'appeler a, b, c
donc resultat sera comme ca: a=48   b=26    c=58.11
j'ai reussi de faire allouer le premier variable mais le reste jai pas pu, donc on doit eliminer les caracteres °, ', "

le script:
$text_compose=$_post['text'];
preg_match("/[0-9][0-9]/", $text_compose, $sortie);
    $a=$sortie[0];
 echo $a;  //s'affiche les deux premiers nombre 48 par exemple

 preg_match("|[0-9][0-9]./[0-9][0-9]/i",$text_compose , $sortie);
    $b=$sortie[0];
 echo $b;

  preg_match("\'(.*?)"", $text_compose, $sortie);
    $c=$sortie[0];
 echo $c;

/////////////////////////////////////////////////////

Merci de me repondre, j'attend vos reponse

6 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
29 juil. 2008 à 11:15
Salut,

Hum ... tu te compliques la vie :s

Prenons une variable :
$var = '48°26\'58.11"';

On à donc CC°CC'CC.CC" (C étant un chiffre).
Il ne reste plus qu'a faire un seul preg_match();

On à donc :

$var = '48°26\'58.11"';
if( preg_match('`([0-9\.]+)°([0-9\.]+)\'([0-9\.]+)"`', $var, $matches) )
{
    print_r($matches);
}

<hr />Si ma reponse te convient, merci de l'accepter ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
29 juil. 2008 à 17:11
Re,

Euh ... quel intéret de mettre un antislash au " ?

Ma variable est de la forme $var = ' ... '; (des simples quotes)
Donc, il faut juste des antislashs devant les '. Si c'était $var = " ... " ... "; il faudrait un \ devant les ".

Dans ce cas là, il faudrait faire :  '`([0-9\.]+)°([0-9\.]+)\'([0-9\.]+)\"`'
^^

Maais inutile (surtout depuis la version 6.0.0 de Php)

Il faut aussi faire attention lorsque l'on met sur un serveur (voir en local). Selon la configuration, des antislashs sont ajoutés automatiquement lors des _POST, _GET, _SESSION, _COOKIES, _FILES, _SERVER & _ENV.
Dans ce cas, il faut mettre un code qui va appliquer un stripslashes() sur les valeurs ^^

Pris au hasard sur php.net :
<?php

function stripslashes_deep($value)

{

    $value = is_array($value) ?

                array_map('stripslashes_deep', $value) :

                stripslashes($value);



    return $value;

}

?>



This gives:



<?php

if((function_exists("get_magic_quotes_gpc") &amp;&amp; get_magic_quotes_gpc())    || (ini_get('magic_quotes_sybase') &amp;&amp; (strtolower(ini_get('magic_quotes_sybase'))!="off")) ){

    stripslashes_deep($_GET);

    stripslashes_deep($_POST);

    stripslashes_deep($_COOKIE);

}

?>

Tu colles ça quelque part dans ton fichier (config/function/...) et plus besoin d'utiliser la focntion stripslashes()
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
29 juil. 2008 à 11:23
bonjour,
c'est vrai que je complique ma vie, meme que la est trop simple.

merci encore infiniment
0
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
29 juil. 2008 à 12:30
rebonjour,
ton exemple de la chaine $var ca marche tres bien mais si on prend

$var='43°51.12\'30"'
et
preg_match('`([0-9\.]+)°([0-9\.]+)\'([0-9\.]+)"`', $var, $matches)

 prennant totalement votre exemple et on ajoute le slash, le probleme vient de deuxieme slash et ",

merci de me repondre
0

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

Posez votre question
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
14 août 2008 à 20:20
salut,
je sais pas ou je mettre la fonction de stripslashes
mais bon jai utilisé le stripslashes sur les entrer de $_post[]

merci
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
14 août 2008 à 21:16
Hello ^^

Euh, tu colle le bout de code au début de tes pages (par exemple, dans un fichier config/function/...)
Après, plus besoin de mettre des stripslashes (sauf cas particulier enfonction de ton codage)

Sinon, il faut modifier le php.ini (
magic_quotes_gpc)
, là, plus besoin de rien faire (mais mettre ce code permet une compatibilité inter-versions/config ^^
<hr />Si ma reponse te convient, merci de l'accepter ! 
0
Rejoignez-nous