Php probleme avec explode

Résolu
chang -  
 chang -
Bonjour,

j'ai un script qui fonctionne très bien en local mais plus une fois en ligne. après avoir testé pas à pas, je m'aperçois que c'est explode("\r\n",$chaine) qui ne fonctionne pas en ligne. je lis dans un fichier txt, j'avais jusqu'ici l'habitude d'utiliser cette fonction de cette façon. avez-vous une idée ? à part terminer toutes les lignes par un séparateur alphanumérique ?

merci.

3 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Si ton site est hébergé sur un serveur Unix / Linux, les séparateurs de ligne ne seront pas des \r\n, mais des \n seuls.
    Donc il faut utiliser explode("\n",$chaine);
    Si tu veux que ton script fonctionne quel que soit le serveur (linux ou windows), je te suggère même de convertir les \r\n en \n au moment de l'explode :
    explode("\n",str_replace("\r\n", "\n", $chaine));

    Par contre, si ton fichier est volumineux, cela peut gréver les performances. À toi de voir en fonction de tes besoins.

    Xavier
    1
  2. chang
     
    merci beaucoup, à tâtons c'est ce que j'avais fini par trouver et je venais pour porter la réponse. je retiens ton conseil, mes fichiers ne sont pas volumineux en général. par contre, juste pour comprendre : j'ai toujours fait comme ça (en local ou en ligne) et ça marchait jusqu'ici, comment cela se fait-il ? je suis sur free.
    merci encore
    0
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      À mon avis, cela dépend aussi de la machine sur laquelle tu as créé et/ou modifié le fichier.
      Si tu crées le fichier sous windows, puis le mets en ligne sur un serveur linux, il restera en \r\n.
      Par contre, si tu crées le fichier en ligne (via un script php par exemple), il sera plus vraisemblablement au format linux.
      0
    2. chang
       
      merci bien bas Xavier, j'adore comprendre le pourquoi du comment
      0
  3. chang
     
    au fait j'ai aussi noté que les " étaient obligatoires, impossible d'utiliser des simples '. pourtant ça fonctionnait aussi auparavant avec des ' (??).
    0
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Ça c'est étrange. Il y a peut-être une configuration du php.ini, mais j'en doute...
      0