Comment puis-je faire PHP fputcsv () pour reconnaître le classique Mac (CR) caractère de nouvelle ligne?

StackOverflow https://stackoverflow.com/questions/4759880

  •  16-10-2019
  •  | 
  •  

Question

J'utilise ce code pour obtenir le nombre de colonnes d'un fichier CSV:

$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
    $this->number_of_columns = count($dataset);
}

Il fonctionne très bien à moins le fichier est exporté avec Excel pour Mac 2011 puisque le nouveau caractère de ligne est alors Mac Classic (CR) qui fgetcsv ne reconnaît pas.

text alt

Si I manuellement modifier la nouvelle ligne de Classic Mac (CR) à Unix (LR), il fonctionne, mais je dois que cela soit automatisé.

Comment puis-je faire fgetcsv reconnaître le classique Mac (CR) caractère de nouvelle ligne?

Était-ce utile?

La solution

De la manuel:

  

Remarque: Si PHP est pas correctement   la reconnaissance des lignes lors de la   lecture de fichiers soit sur ou créés par   un ordinateur Macintosh, ce qui permet la   auto_detect_line_endings d'exécution   option de configuration peut aider à résoudre   le problème.

Autres conseils

Si la réponse de Saül ne fonctionne pas, je voudrais écrire un script simple à lire dans le fichier à la fois et str_replace tous les \ r \ n, le dumping des résultats dans un nouveau fichier, fgetcsv'ing alors que le nouveau fichier .

Je trouve amusant que ces termes sont des jours d'utilisation des machines à écrire:
\ N = alimentation ligne (LF) - avance la ligne un papier
. \ R = retour chariot (CR) -. Ramène le chariot vers le côté gauche de la machine à écrire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top