IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Caractères spéciaux [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Points : 14
    Points
    14
    Par défaut Caractères spéciaux
    Bonjour,

    je bloque sur un script à cause des caractères spéciaux € et ^2.

    Mon script aspire une page sur internet et retrouve des couples euro / surface en mètre carré pour effectuer un ratio des deux. Mon problème est que mon script ne fonctionne pas sur tous les sites Internet aspirés.

    A force de teste, j'ai fini par comprendre que tous les sites n'écrivait pas € pour € et m2 pour mettre carré. J'ai donc amélioré un bout de mon expression régulière pour donner ceci.

    (?:€|€) pour euro et
    (?:m2|m²) pour les surface.

    Mon script ne fonctionnait pas plus. Du coup, j'ai écris le résultat aspiré directement dans un fichier. J'ai ainsi découvert que certains site Internet utilisait un m≤ à la place de m2 pour les surfaces. En replaçant le m≤ par un m2, mon script fonctionne. J'ai donc pensé qu'un str_replace('m≤', 'm2', $variable); suffirait, mais ce n'est pas le cas.

    Maintenant, j'ai ajouté les codes hexadécimal des caractères, mais je ne suis pas plus avancé

    (?:€|€|\x20AC)
    (?:m\xB2|m2)

    Tout est dit ... Je suis donc à court d'idée . Sur certain site mon expression fonctionne, sur d'autres non. Savez-vous comment je pourrais dire à mon expression régulière de reconnaitre ce maudit signe "carré" sous toutes ses formes ainsi que ce maudit signe "euro" sous toutes ses formes ?

    Merci d'avance pour votre patience / voir pour votre aide !

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Le souci apparaît lorsque le jeu de caractères utilisé par la page à traiter est différent de celui utilisé dans ton document.

    Par exemple, si ta page utilise le charset ISO-8859-1 alors, tu devrais utiliser la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1');
    Et si la page à lire est au format UTF-8, tu devrais utiliser utf8_decode qui convertit une chaîne UTF-8 en ISO-8859-1.

    À l'inverse, si ta page utilise le charset UTF-8 alors, tu devrais utiliser la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocale(LC_CTYPE, 'fr_FR.UTF8');
    Et si la page à lire est au format ISO-8859-1, tu devrais utiliser utf8_encode qui convertit une chaîne ISO-8859-1 en UTF-8

    À voir aussi les Fonctions sur les chaînes de caractères multi-octets pour détecter le charset utilisé, convertir, etc...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Merci Eric2a,


    mon script fonctionne enfin. Je me sers de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mb_detect_encoding($str, "auto")!=="UTF-8")
    pour vérifier que ma chaine est bien en utf8 sinon avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = mb_convert_encoding($str, "UTF-8", "auto");
    je la convertis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. caractères spéciaux
    Par mat10000 dans le forum Flash
    Réponses: 16
    Dernier message: 23/10/2003, 13h22
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo