Bonjour à tous,around,
merci d'avance pour l'aide.

Mon problème est le suivant:
j'ai un fichier txt, et je voudrais récupérer simplement les coordonnées de la latitude et de la longitude de la dèrnière ligne dans le fichier pour ensuite les afficher dans une barre de recherche sur google map. Mais la je sèche vraiment, je suis débutant en php, expression régulière...
php:

<?php 
$tab = file('donnee.txt');
$der_ligne = $tab[count($tab)-1];
echo $der_ligne;
$result = preg_match('/(lat\": )^([0-9\\.]+))/', $der_ligne);/* la latitude et la longitude */
echo "$result";  
fclose($tab);
?>

fichier donnee.txt:

`---- On Tue, 28 Apr 2015 08:24:16 +0200, I received a SMS from: +33785810260. Content is: lat: 48.731860 long: -003.449270 speed: 000.0 28/04/15 07:23 bat:F signal:F imei:013949001036196
---- On Tue, 28 Apr 2015 09:00:43 +0200, I received a SMS from: +33785810260. Content is: lat: 48.732046 long: -003.449258 speed: 000.0 28/04/15 08:00 bat:F signal:F imei:013949001036196
---- On Tue, 28 Apr 2015 09:12:01 +0200, I received a SMS from: +33785810260. Content is: lat: 48.732145 long: -003.449396 speed: 000.0 28/04/15 08:11 bat:F signal:F imei:013949001036196``

4 réponses


Bonjour @Maxime Bodivit

Je vous propose ceci =>

function getCoordonnee($ligne)
{
    preg_match_all("#(long|lat): *[*]{2} *(-{0,1}[0-9]+[.][0-9]+) *[*]{2}#", $ligne , $matching);
    $coordonnee = array();
    if(count($matching) == 3)
    {
        foreach($matching[1] as $k => $v)
        {
            $coordonnee[$v] = $matching[2][$k];
        }
    }
    return $coordonnee;
}

Usage

$lignes = file('donnee.txt');
$derniereLigne = end($lignes);
var_dump(getCoordonnee($derniereLigne));

Bonjour @balbert et merci de m'avoir répondu aussi vite.

Je ne comprend pas à quel moment cela affiche les coordonnées...

Merci

Bonsoir @Maxime Bodivit,

La fonction getCoordonnee prend en argument une chaine de caractère qui represente la ligne qui contient la latitude et longitude
Elle renvoie un tableau contenant la latitude et la longitude sous le forme de tableau =>

array(
    "lat" => 48.732145,
    "long" => -003.449396
);

Pour acceder à la latitude et à la longitude de la dernière ligne de votre fichier,
il vous suffit de recupperer la dernière ligne comme suite :

// on recuppere les lignes sous forme de tableau
$lignes = file('donnee.txt');
// on recuppere la derniere ligne avec la fonction end
$dernierLigne = end(lignes);
// on recuppere les coordonnees avec la fonction
$coordonnee = getCoordonnee(ligne);
$latitude = $coordonnee["lat"];
$longitude = $coordonnee["long"];

Par contre si les chiffres de la longitude et de la latitude ne sont pas entourés d'etoiles alors vous pouvez remplacer votre fonction getCoordonnee par =>

function getCoordonnee($ligne)
{
    preg_match_all("#(long|lat): *(-{0,1}[0-9]+[.][0-9]+) *#", $ligne , $matching);
    $coordonnee = array();
    if(count($matching) == 3)
    {
        foreach($matching[1] as $k => $v)
        {
            $coordonnee[$v] = $matching[2][$k];
        }
    }
    return $coordonnee;
}

Merci pour votre réponse, je vais re-esseyer ça !