Programme avec preg_match [Résolu]

Signaler
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012
-
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
-
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

Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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 ! 
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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 ! 
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

bonjour,
c'est vrai que je complique ma vie, meme que la est trop simple.

merci encore infiniment
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

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
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

salut,
je sais pas ou je mettre la fonction de stripslashes
mais bon jai utilisé le stripslashes sur les entrer de $_post[]

merci
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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 !