Fonctions fgetcsv() et caractères spéciaux (§)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonctions fgetcsv() et caractères spéciaux (§)

par Hywan » 19 mai 2009, 17:27

Qu'est-ce que la constante CSV_MAX ?

par lorenzeb » 19 mai 2009, 17:03

PostgreSQL pardon. :lol:

par lorenzeb » 19 mai 2009, 17:02

Ahah bah le problème c'est que j'injecte justement ces données en base. Qui est d'ailleurs une base PotgreSQL.

Malheureusement j'ai déjà tenter de réécrire le fichier à la main.
J'ai également vérifié avec notepad++ le fichier que l'on m'a fournis en changeant les encodages mais aucune trace de caractère suspect.

Vraiment je ne comprends pas.

Je te remercie de ton aide en tout cas.

par Hywan » 19 mai 2009, 16:38

Et qu'est-ce que tu dis de passer à une vraie base de données :-D ?

Essaye de réécrire manuellement ton fichier (ou au moins une ligne). Peut-être que tu as un caractère « invisible » quelque part.

par lorenzeb » 19 mai 2009, 16:33

Je n'ai rien de plus sur chaque ligne.

par lorenzeb » 19 mai 2009, 16:23

Ok mais je t'ai déjà tout donné.

ABFE1423;§GEUT_BD_Superviseur

par Hywan » 19 mai 2009, 16:03

On peut voir la ligne de ton fichier CSV ? (Je commence à me lasser de demander les choses …).

par lorenzeb » 19 mai 2009, 16:02

Egalement,

Si je place mon caractère ailleurs dans le libellé du champs je le retrouve.

Exemple :

string(8) "ABFE1423"
string(20) "GEUT_BD_§Superviseur"

par lorenzeb » 19 mai 2009, 15:58

Merci pour ces infos,

J'ai testé de lire mon fichier avec la fonction fread() et je retrouve bien mon caractère.

par Hywan » 19 mai 2009, 15:43

Mon fichier CSV de test :

Code : Tout sélectionner

lorem;ipsum;§est;dolor
Mon fichier PHP de test :
<?php

$fp = fopen('test.csv', 'r');

while(false !== $data = fgetcsv($fp, 0, ';'))
    print_r($data);

fclose($fp);
Le résultat :

Code : Tout sélectionner

Array ( [0] => lorem [1] => ipsum [2] => §est [3] => dolor )
On dirait que ça marche mon p'tit père :-).

Mes deux fichiers (CSV et PHP) sont encodés en UTF-8.
Essaye de lire simplement le fichier, sans passer par fgetcsv(), juste pour voir s'il lit bien le caractère. Ça éliminera plusieurs possibilités.

par lorenzeb » 19 mai 2009, 15:21

Ok donc voici le code réduit de lecture du fichier mais je ne pense pas que ça t'aide beaucoup.
function lireCSVRepriseRA($pathFichier){
	
	$handleFichier = fopen($pathFichier, "r");
	
	while (($data = fgetcsv($handleFichier,CSV_MAX,";")) !== false) {
	
		echo $data[0];
		echo $data[1];
	}
	fclose($handleFichier);
}

Voici le résultat de la première ligne :

string(8) "ABFE1423"
string(19) "GEUT_BD_Superviseur"

Le résultat de la seconde valeur aurait donc du être §GEUT_BD_Superviseur

S'il te manque encore des informations n'hésite pas.

par Hywan » 19 mai 2009, 12:52

Si je n'ai aucun code, je ne peux pas t'aider énormément. Je demande juste une ligne, ce qui n'est pas gênant pour ton entreprise …
Quand tu affiches le résultat, essaye avec la fonction var_dump() et donne moi le résultat (en plus d'un peu de code).

par lorenzeb » 19 mai 2009, 11:58

Bonjour merci pour ta réponse,

Alors mon l'encodage dans mon php.ini est configuré de cette manière :

- default_charset = "iso-8859-15"

Voici la ligne de mon fichier CSV :

AAAA1111;§appli

En ce qui concerne le code je vais éviter de le mettre car je suis en entreprise. Cela dit je peux vous dire que je n'ai défini aucun encodage particulier dans mon fichier que ce soit en php ou en HTML.

Peux-être cela vient-il de là ?

Sinon j'utilise la fonction fgetcsv() de la manière la plus basic qui soit.

Je rappel qu'en passant par WAMP donc sur mon Windows, cela fonctionne. Une fois les scripts déposés sur mon serveur Linux, cela ne fonctionne plus.

L'encodage du php.ini est le même sur les deux plate-forme.

Merci

par Hywan » 19 mai 2009, 09:54

Hey :-),

Quels sont les encodages de ton script et ton fichier CSV ? Peut-on avoir la ligne complète de ton fichier CSV ? Peut-on avoir ton script PHP ?

par lorenzeb » 19 mai 2009, 09:05

Aucune idée sur le sujet ?

Merci