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.

6 réponses

  1. 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
  2. Jaime
     
    Merci pour ton aide =)

    Malheureusement le "\" devant le caractère spécial ne change rien.
    0
  3. 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
  4. 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
    1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. 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