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 :

Preg_match et caractères étrangers [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Preg_match et caractères étrangers
    Bonjour,

    J'ai un problème avec un bout de code que nous a laissé l'ancien développeur avant de partir du jour au lendemain dans une nouvelle société.
    Du coup j'essaie de modifier pour adapter.

    Le code est là pour rapatrier des tableaux entre notre bureau français, et le bureau turc.
    Dans le sens France--> Turquie tout se passe bien, mais lorsque les tableaux doivent aller dans l'autre sens, ça ne fonctionne qu'à moitié.

    L'extraction des données s'arrête après les caractères spéciaux turcs (ex : Ş - İ- Ğ ). Lorsqu'il n'y a pas ces caractères, tout fonctionne. Dès qu'un caractère de ce type apparaît, l'extraction fonctionne jusqu'à ce que le premier caractère de ce type apparaît.

    Voici le bout de code pour l'extraction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $kaynakkodu = file_get_contents("http://www.*****.com/commandes.php");
    preg_match('#<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" class="commandes">(.*?)</table>#s',$kaynakkodu,$icerik);
    $iceriq=$icerik[1];
    Avez-vous une astuce pour qu'il prenne en considération ces caractères ?

    D'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En supposant que les deux côtés travaillent en UTF8, il faut utiliser le modifieur "u" :
    http://php.net/manual/fr/reference.p....modifiers.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour la réponse, j'ai regardé mais je n'ai pas pu mettre en oeuvre :-/

    Ça donne quoi concrètement à rajouter dans le code ?

    Merci

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    ajout de u :
    Il faut bien sur que les chaines(sites) soient en utf-8
    $moi= ( !== ) ? : ;

  5. #5
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    En mettant le code comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $kaynakkodu = file_get_contents("http://www.*****.com/commandes.php");
     
    preg_match('#<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" class="commandes">(.*?)</table>#su',$kaynakkodu,$icerik);
     
    $iceriq=$icerik[1];
    plus rien n'apparaît... même le début qui apparaissait avant n'apparaît plus cette fois :-/

    EDIT : Test effectué à l'instant

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Les pages qui contienent des caractères turcs sont souvent en encodage iso-8859-1 ou windows-1254. Donc, en premier temps, vous pouvez faire ceci pour voir si le problème est réglé avant de déterminer avec vos partenaires dans quel encodage exactement les caratères sont servis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $kaynakkodu = file_get_contents("http://www.*****.com/commandes.php");
     
    //on peut élaborer
    $encode_list=array('ASCII', 'UTF-8', 'ISO-8859-1', 'windows-1254');
    $ret=mb_detect_encoding($kaynakkodu, $encode_list, true);
     
    if ((bool)$ret && $ret!='UTF-8') {
        $kaynakkodu=iconv($ret, 'UTF-8', $kaynakkodu);
    } else {
        //ne faire rien
    }
     
    //continue avec l'option PCRE_UTF8

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/03/2008, 09h43
  2. [RegEx] Caractère louche à preg_matcher
    Par shivka dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2007, 13h14
  3. [Système] Caractères spéciaux et preg_match
    Par theo7 dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 19h19
  4. [XML][DOM] lecture caractères étrangers
    Par tigrou2405 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/10/2006, 18h00
  5. Réponses: 2
    Dernier message: 04/10/2006, 13h03

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