J'utilise la fonction fgetcsv pour lire un fichier CSV (jusque là, rien de bien sorcier), elle me retourne bien les valeurs des champs délimités par mon paramètre ( ; ) sauf que ces valeurs sont entourés de " (double quotes). Normalement l'enclosure est par défaut '"' donc je ne comprends pas bien. Ça m'aiderait beaucoup de les enlever, est-ce que quelqu'un a une idée ?
Salut, voici le début de mon code, je ne pense pas que vous ayez besoin de la suite (mais si besoin, dîtes-le moi)
<?php
require_once("./menu.php");
$menu = affiche_menu();
?>
<head>
<meta charset="utf-8" />
<title>Import xxxxx</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<?php
echo $menu;
//header('Content-type: text/html; charset=iso-8859-1'); // Accents
function listeDossier($dossier) // liste un dossier de façon récursive
{
if (is_dir($dossier)) // vérifie que le paramètre précisé dans la fonction est un dossier
{
if($dossierOuvert=opendir($dossier)) // ouverture ?
{
echo "<ul>";
while(($fichier=readdir($dossierOuvert))!== false)
{
if ($fichier==".." || $fichier=="." || $fichier=="index.php")
{
continue;
}
else
{
if(is_dir("$dossier/$fichier"))
{
echo "<li>$fichier</li>";
listeDossier("$dossier/$fichier");
}
else
{
echo "<li><a href='$dossier/$fichier'>$fichier</a></li>";
/*--------------------------------------------------------------------------------------------------------------------------------*/
//On détermine la date en fonction du nom du fichier (plus flexible avec un switch)
/*switch ($fichier[0]) {
case 'v':
//Date format récupéré
$datefichier = substr($fichier, -20, -4);
//Découpage
list( $jour, $mois, $annee, $heure, $min) = sscanf( $datefichier, "%d.%d.%d.%d.%d" );
$sec = '00';
break;
case 'E':
//Date format récupéré
$datefichier = substr($fichier, -23, -4);
//Découpage
list( $jour, $mois, $annee, $heure, $min, $sec) = sscanf( $datefichier, "%d.%d.%d.%d.%d.%d" );
break;
default:
# code...
break;
}*/
if ($fichier[0] == 'v') {
//Date format récupéré
$datefichier = substr($fichier, -20, -4);
//Découpage
list( $jour, $mois, $annee, $heure, $min) = sscanf( $datefichier, "%d.%d.%d.%d.%d" );
$sec = '00';
}
elseif ($fichier[0] == 'E') {
//Date format récupéré
$datefichier = substr($fichier, -23, -4);
//Découpage
list( $jour, $mois, $annee, $heure, $min, $sec) = sscanf( $datefichier, "%d.%d.%d.%d.%d.%d" );
}
else {
echo "erreur date";
}
$datefichier2 = $annee .'-'. $mois .'-'. $jour .' '. $heure .':'. $min .':' . $sec;
echo $datefichier2 . "<br />";
/*--------------------------------------------------------------------------------------------------------------------------------*/
/*$pdoOptions[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;*/
require_once("./connect.php");
//Différentes requêtes pour récupérer les informations de la base de données
$sql1 = $bdd->prepare('SELECT id_vm FROM vm WHERE nom = :nom ;'); // On recherche le nom
$sql2 = $bdd->prepare('INSERT INTO vm(nom) VALUES(:nom) ;'); // On le crée et on récupère son id
$sql3 = $bdd->prepare('INSERT INTO mesure (date_heure, valeur, id_vm, id_indicateur) VALUES( :datefichier2, :valeur, :id_vm, :id_indicateur) ;');
//Affichage des valeurs
/* Ouvertre du fichier csv en mode lecture */
$f = fopen($dossier. '/' . $fichier, 'r+') ;
/* Contrôle de l'ouverture */
if(is_resource($f)) {
/* lis la première ligne dans le vide */
fgetcsv($f, 4096, ";", '"');
/* Boucle sur chaque ligne (Teste la fin du fichier) */
while(! feof($f)) {
$d = fgetcsv($f, 4096, ";", '"');
print_r(fgetcsv($f, 4096, ";", '"', "\\"));
echo "<br />";
Problème fgetcsv
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Freelance développeur Symfony