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 :

encore une expression régulière [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut encore une expression régulière
    bonjour,

    j'aimerai faire la recherche à la fin d'une chaîne de caractère, soit "<" soit "<b" soit "<br" soit "<br>" et les supprimer.

    je pensais faire une tableau mais est ce la meilleure solution ?

    quelle fonction utiliser ?

    merci d'avance

  2. #2
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $commentaire = str_replace("(<|<b|<br|<br>)$","",$commentaire);
    mais ça ne marche pas du tout

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<')));
    var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<b')));
    var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<br')));
    var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','','texte<br>')));

  4. #4
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    j'ai un peu du mal à comprendre ta réponse.

    j'ai fait le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<')));
            $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<b')));
            $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br')));
            $commentaire = var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br>')));
            echo $commentaire;
    ce qui est retourné :
    string(230) "Cet escalier en liaison est une construction importante, situé entre trois bâtiments :<br /> - des logements collectifs<br /> - des parkings souterrains<br /> - le bâtiment commercial<br " string(0) "" string(0) "" string(0) ""
    je ne vois pas vraiment comment exploiter le résultat !

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump(htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<')));
    Décomposons :
    http://php.net/var_dump
    http://php.net/htmlentities
    http://php.net/preg_replace

    Autrement dis, la première fonction m'affiche plein d'infos utiles pour debugger
    La deuxième permet d'afficher les tags html pour voir si ils sont présent ou pas (rappellons-nous que nous sommes dans un document html)
    La dernière fait apparemment ce que tu attends.

    Désolé de ne pas avoir donné plus d'explication, mais l'utilisation de var_dump & co sont super utiles pour débugger et pour moi c'est naturel de les utiliser en developpement. J'oublie trop facilement que ce n'est pas un reflexe pour tout le monde

    Pour conclure donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $commentaire = htmlentities(preg_replace('/(<|<b|<br|<br>)$/','',$commentaire);

  6. #6
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    merci pour l'info !

    je vais être encore chiante une dernière fois.
    Avec la fonction htmlentities(), tous les caractères spéciaux sont transformés :

    Cet escalier en liaison est une construction importante, situ&amp;amp;eacute; entre trois b&amp;amp;acirc;timents :&amp;amp;lt;br /&amp;amp;gt; - des logements collectifs&amp;amp;lt;br /&amp;amp;gt; - des parkings souterrains&amp;amp;lt;br /&amp;amp;gt; - le b&amp;amp;acirc;timent commercial&amp;amp;lt;br
    comment éviter cela ?

    de plus, le "<br" de la fin de la chaîne n'est pas supprimé

    ce que je n'ai pas précisé c'est que je coupe $commentaire et je lui rajoute "... [Suite]" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $commentaire = substr($commentaire,0,190);
            $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<');
            $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<b');
            $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br');
            $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire.'<br>');
            $commentaire = $commentaire."... [Suite]";
            echo $commentaire;
    j'ai édité le code html généré et y'a vraiment un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cet escalier en liaison est une construction importante, situé entre trois bâtiments :<br>
    - des logements collectifs<br>
    - des parkings souterrains<br>
    - le bâtiment commercial<br .="" [suite="">

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut

    Je suis pas bien réveillé moa ! Il ne faut pas utiliser htmlentities...
    Je mérite le fouet !

    Va-t-on y arriver cette fois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',$commentaire);

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour le dernier br :
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $commentaire = preg_replace('/(<|<b|<br|<br>)$/','',trim($commentaire));

  9. #9
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    nickel ! merci !

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

Discussions similaires

  1. Encore une expression régulière
    Par air_v dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/02/2008, 17h47
  2. Encore une expression régulière
    Par play_all dans le forum Général Python
    Réponses: 2
    Dernier message: 16/02/2008, 09h17
  3. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22

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