Bonjour à tous
Je deviens fou !
Voici un code lisant un fichier "texte" pour lequel, je veux convertir des strings en float. Après moultes essais, le (float)$MyString renvoie toujours 0 (zéros) pour certains fichiers.
Par exemple, si l'on affiche le fichier via l'URL https://visiolittoral.fr/Traces/Trac...ebe4d28%7D.txt
on voit tout de suite la présence de losanges noir avec points d’interrogation.
Notez que ce fichier s'affiche correctement dans un notepad++ (par contre, aucun encodage n'est sélectionné dans l'onglet "Encodage").
Avec des fichiers UTF8, aucun problème.
Si j'ajoute des echo, vardump... les chaines (des coordonnées en l’occurrence) sont correctement affichées.
Comment :
- détecter/ouvrir ce type de fichier ?
- connaitre l'encodage ?
- arriver à convertir les chaines ?
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 class Coord { public $long; public $lat; } $inT=fopen("Traces/".$row["filename"],"r"); while (!feof($inT)) { $bufferT=fgets($inT); if ($bufferT===null or $bufferT===false or $bufferT=="" or strlen($bufferT)<=1) { } else { list($Long,$Lat)=Get_Positions($bufferT); $coord = new Coord(); $coord->long = $Long; $coord->lat = $Lat; $Positions[]=$coord; } } fclose($inT); function Get_Positions($LIGNE) { $Long=""; $Lat=""; $Direction=""; list($Long,$Lat,$Direction)=explode(';', $LIGNE); return [(float)$Long,(float)$Lat]; }
Partager