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 :

ereg qui ne trouve pas les accents


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut ereg qui ne trouve pas les accents
    Bonjour à tous

    j'utilise un socket pour récupérer le code HTML d'une page. ensuite, j'essaye de le parser, pour retrouver des bouts d'HTML, et en ressortir des données.

    petit hic : ereg ne me retrouve pas les chaines avec des accents :/ voici mon format regex :

    <a href="viewforum.php\?f=([0-9]{1,})&amp;sid=[[:alnum:]]{32}" class="forumlink">([[:graph:][:space:]]*)</a>

    ce qui pose problème, c'est [[:graph:][:space:]]*. pour info, mon fichier .php est encodé en utf8, je sais pas si ça peut changer quelque chose. sachant que j'ai essayé utf8_encode et utf8_decode sur l'HTML récupéré via le socket, sans changement sur le ereg.

    quelqu'un a une idée ?

  2. #2
    Membre chevronné Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Par défaut
    bonjour,

    Peux tu nous donner un exemple d'URL a analyser stp, ce qui répondrait a mes questions :
    et avec eregi?
    et pourquoi pas [:alnum:] à la place de [:graph:]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    oups désolé, voila le type d'HTML que j'ai à trouver, parmi tout le code HTML d'une page :

    pas trouvé
    <a href="viewforum.php?f=38&sid=6ca865271bda5ca3c68777798ba82909" class="forumlink">[TA] News - Bugs - Idées</a>

    trouvé
    <a href="viewforum.php?f=38&sid=6ca865271bda5ca3c68777798ba82909" class="forumlink">[TA] News - Bugs - Idees</a>

    je n'utilise pas erregi parceque je préfère tenir compte de la casse.

    j'utilise [:graph:] et non pas [:alnum:] parceque graph prend en compte tous les caractères possibles (enfin, imprimables), d'après ce que j'ai compris. mais c'est mon premier regex, donc je galère un peu

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vos locales sont-elles correctes ? (cf phpinfo).

    Il est préférable aujourd'hui d'utiliser l'extension PCRE aux fonctions POSIX (ereg) :
    Citation Envoyé par Yogui
    eregi est une fonction dépassée qui est même désactivée depuis PHP 5.2... Il faut maintenant utiliser les PCRE, la différence est simple et tu gagneras en possibilités & performances.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    c'est à dire, mes locales sont-elles correctes ? je voudrais un code qui ne s'occupe pas du pays où est hébergé la page en fait, je veux pouvoir lire de l'HTML d'un site espagnol, d'un site anglais, français, etc

  6. #6
    Membre expérimenté Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Par défaut
    quant julp parle des locales, il réfère aux règles sur ton serveur que les fonctions liées aux chaines de caractères sur ton serveur se conformeront, et non aux documents externes à ton espace internet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo setlocale(LC_CTYPE,null);
    devrait retourner pays, langue et charset sur ton serveur pour les fonctions sur les chaines de caractères.

    Citation Envoyé par Sephiroth Lune
    mon fichier .php est encodé en utf8
    pas toujours une bonne idée

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/12/2014, 10h19
  2. Réponses: 2
    Dernier message: 04/12/2011, 19h42
  3. Réponses: 0
    Dernier message: 01/02/2011, 19h45
  4. innerHTML qui ne gère pas les accents (à, é,è..)
    Par beegees dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2009, 22h21
  5. Réponses: 2
    Dernier message: 16/10/2007, 14h40

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