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 :

Supprimer seulement les balises d'une chaine de caractère


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 65
    Points : 39
    Points
    39
    Par défaut Supprimer seulement les balises d'une chaine de caractère
    Bonjour a tous.
    Voila, j'ai cette chaîne de caractère: "<br> Structure: Géant Casino <br> Adresse: 24 Av des Salines <br> Ville: 39000 - LONS LE SAUNIER"

    Et je voudrais enlever seulement les balise <br>, "Structure:", "Adresse", et "Ville".

    Voila mon 1er code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $string="<br> Structure: Géant Casino <br> Adresse: 24 Av des Salines <br> Ville: 39000 - LONS LE SAUNIER"
    $posTest=  explode(" ", $string);
     
                $index=0;
                foreach ($posTest as $mot)
                {
                    if($mot=="<br>"||$mot=="Structure:"||$mot=="Ville:")
                    {
                        unset($posTest[$index]);
                    }
                    $index++;
                }
                var_dump($posTest)
    Tout vas bien, mais comme j'ai oublier de spécifié "Adresse" il me le laisse.
    J'ai donc changer mon code juste en rajoutant ||$mot=="Adresse":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $string="<br> Structure: Géant Casino <br> Adresse: 24 Av des Salines <br> Ville: 39000 - LONS LE SAUNIER"
    $posTest=  explode(" ", $string);
     
                $index=0;
                foreach ($posTest as $mot)
                {
                    if($mot=="<br>"||$mot=="Structure:"||$mot=="Ville:"||$mot=="Adresse")
                    {
                        unset($posTest[$index]);
                    }
                    $index++;
                }
                var_dump($posTest)
    Et voila que $posTest est un tableau vide O.o
    Quelqu'un aurait-il une explication svp?? :')

  2. #2
    Membre confirmé
    Avatar de Deuzz
    Homme Profil pro
    curieux
    Inscrit en
    Septembre 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : curieux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 148
    Points : 521
    Points
    521
    Par défaut
    Bonjour

    Je suis loin d'être un expert mais j'ai quand même une petite idée de bricolage.
    Si tu n'arrive pas à supprimer, pourquoi ne pas remplacer par rien avec preg_replace ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Deuzz a raison.

    On remplace par '' les motifs de la forme : "<br> xxxxxxxxx: "

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine = "<br> Structure: Géant Casino <br> Adresse: 24 Av des Salines <br> Ville: 39000 - LONS LE SAUNIER";
     
    $chaine2 = preg_replace( '#(<br> (.*)?: )#Ui', '', $chaine );

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Ton approche est bonne, il doit y avoir une faute de frappe quelque part à corriger. Sinon tu peux simplifier en utilisant array_diff pour éviter la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $string = "<br> Structure: Géant Casino <br> Adresse: 24 Av des Salines <br> Ville: 39000 - LONS LE SAUNIER";
    $posTest = explode(" ", $string);
     
    $toRemove = ['<br>', 'Structure:', 'Ville:', 'Adresse:'];
     
    $result = implode(' ', array_diff($posTest, $toRemove));
    ou effectivement avec preg_replace mais plutôt avec une négation de classe de caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = preg_replace('~<br>[^:]*: ~', '', $string);

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tu veux supprimer toutes les balises dans un texte, regarde du côté de strip_​tags.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    +1 Cel', parce que si un jour où il se décide de passer à <br /> au lieu de <br>, il se passera quoi ?

Discussions similaires

  1. Supprimer tous les blancs dans une chaine de caractères
    Par joel74 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 20/02/2014, 17h19
  2. Réponses: 14
    Dernier message: 27/04/2011, 10h32
  3. Réponses: 3
    Dernier message: 17/03/2010, 15h50
  4. Supprimer les espaces d'une chaines de caractères
    Par pekka77 dans le forum Langage
    Réponses: 4
    Dernier message: 09/08/2006, 18h02
  5. Supprimer TOUS les espaces d'une chaine
    Par tavekapaclike1er dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/12/2005, 16h19

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