Conversion / Reconnaissance caractère PHP

Jaime -  
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je suis actuellement en train de développer un programme en PHP permettant d'exporter des informations provenant d'une base MySQL, au format CSV.
Seulement, il y a quelques caractères que je n'arrive pas à traiter.

Pour une raison que j'ignore, certains caractères spéciaux tels que le "É" ou "ç" sont affichés en respectivement "à0/00" ou "à§".

Etant donné que je reçois les données directement sous cette forme et que je n'ai pas les possibilités pour influer sur la source, mon idée fut de remplacer ces anomalies par leur caractère respectif via un "str_replace" (en définissant donc les correspondances une à une).

Seulement problème, le "str_replace" ne me les reconnait pas. Impossible donc via le code de faire mes replace du "à0/00" en "É" ou du "à§" en "ç".

Pour l'ensemble des autres chaines, pas de soucis en revanche. Si je fais un remplacer manuel via PSPad, aucun problème non plus.

Quelqu'un aurait-il une idée au sujet de ce problème ?

Merci d'avance pour votre aide.



A voir également:

6 réponses

varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Bonjour,

j'ai peut être une solution, mais cela ne devrait marcher qu'avec des caractères spéciaux...donc s'il considère $ ou / comme un caractère spécial, cela devrait marcher:

exemple de solution:
$exemple = "as\cfrh";
$exemple = str_replace("\","",$exemple );

devrait normallement donner
$exemple = "ascfrh";mais il n'en est rien. En effet, tu doit declarer ton caractere spécial:
$exemple = str_replace("\\","",$exemple );
donnera le resultat attendu precedemment/

En gros mettre un '\' devant le caractère spécial pour qu'il soit pris en compte.
Dans ton cas peut etre que :

$exemple = str_replace("à\§","ç",$exemple );
marchera
0
Jaime
 
Merci pour ton aide =)

Malheureusement le "\" devant le caractère spécial ne change rien.
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
quand tu fais un echo de ta variable avant et apres, cela te donne quoi?
0
Jaime
 
Entre les 2, la variable ne subit aucun changement.

On dirait vraiment qu'il n'y a pas de détection par le replace, étrange...
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
montre moi les lignes:

d'atribution de ta variable (ou tu y stoke un element)
le premier echo
le replace
et le second echo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jaime
 
Voici :

$fp = fopen("feedProducts.txt", "r");
$current_line = fgets($fp);

while (!feof($fp)) {

$current_line = fgets($fp);

echo $current_line; //RESULTAT : "conà§u"

$current_line= str_replace("à§","ç",$current_line);

echo $current_line; //RESULTAT : "conà§u"

fwrite($fp,$current_line);

}

Si en revanche avec le même code, je fais un replace sur un autre mot, pas de problème.
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
essaye en faisant
$current_line= str_replace("à\§","ç",$current_line);
ou
$current_line= str_replace("\à§","ç",$current_line);
ou
$current_line= str_replace("\à\§","ç",$current_line);
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
C'est pas plutôt É => Ã0/00 et ç => ç ?
Si c'est le cas essaye de passer ta chaine de caractère par un petit utf8-decode https://www.php.net/manual/fr/function.utf8-decode.php.
0