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

PHP & Base de données Discussion :

demande d'aide sur une fonction


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut demande d'aide sur une fonction
    Bonjour,

    je vous écris car j'ai un probleme pour modifier une fonction.
    Aussi merci d'avance à toutes les personnes qui voudront bien m'aider =(

    Ma fonction de base à pour objectif d'afficher un extrait de texte sur mon blog wordpress :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    <?php
     
    function improved_trim_excerpt($text) {
        global $post;
        if ( '' == $text ) {
            $text = get_the_content('');
            $text = apply_filters('the_content', $text);
            $text = str_replace(']]>', ']]&gt;', $text);
            $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
            $text = strip_tags($text, '<p><a><strong><br /><font><h2><h3><span>');
            $excerpt_length = 50;
            $words = explode(' ', $text, $excerpt_length + 1);
            if (count($words)> $excerpt_length) {
                array_pop($words);
                array_push($words, '[...]');
                $text = implode(' ', $words);
            }
        }
        return $text;
    }
     
    ?>
    Cette fonction marche parfaitement ! le seul problème c'est qu'avant chaque contenu symbolisé par la balise "<p class="aeretexte">" j'ai une div : "<div class="resume">" qui contient un tableau que je ne souhaite pas afficher dans l'extrait.

    Ma question est la suivante : comment modifier la fonction pour n'afficher le texte qu'a partir de la balise "<p class="aeretexte">" et de supprimer tout ce qui est avant ??

    merci beaucoup d'avance car j'ai un petit niveau en php et là je suppose qu'il faut utiliser une regex =(


    merciiiii

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Est-ce que tu pourrais poster un code exemple contenant le <div class="resume"> et le <p class="aeretexte">

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    Bonjour,

    ci-joint le code (et merciiii !!) car la je seche =(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <div class="resume">
    <table>
     
                   <tr>
                        <td class="icon">
                            <img src="images/tadin.gif" />      
                        </td>
                        <td class="apo">
                            <div>
     
                                Taille: <strong>4.8 Mo </strong><br>
                                Version: <strong>1.1</strong><br>
     
                            </div>
     
                        </td>
                        <td >
                            Société: Service d'Information du Gouvernement</a>
     
                     </td>
     
     
        </tr>                    
               </table>
     
    </div>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p class="aeretexte">Pour ceux qui ont besoins de bons plans, on vous présente ..... (contenu de l'article) </p>

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je pense quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function improved_trim_excerpt($text) {
        global $post;
        if ( '' == $text ) {
            $text = get_the_content('');
            $text = apply_filters('the_content', $text);
            $text = str_replace(']]>', ']]&gt;', $text);
            $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
            $text = preg_replace('@<div\s*class="resume".*[^>]*?>.*?</div>[^<p.*aeretexte.*]@si', '', $text);
            $text = strip_tags($text, '<p><a><strong><br /><font><h2><h3><span>');
            $excerpt_length = 50;
            $words = explode(' ', $text, $excerpt_length + 1);
            if (count($words)> $excerpt_length) {
                array_pop($words);
                array_push($words, '[...]');
                $text = implode(' ', $words);
            }
        }
        return $text;
    }
    Bien qu'il soit très fortement déconseillé (à juste titre) de le faire avec des regex.

  5. #5
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bien qu'il soit très fortement déconseillé (à juste titre) de le faire avec des regex.
    Bonjour

    Pourquoi pas les regex rawsrc ?
    C'est juste pour ma gouverne.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    salut rawsrc ! et merci de vouloir m'aiderrrr =)

    je viens de tester ta fonction mais elle m'affiche un contenu etrange
    en fait elle m'affiche un contenu qui est en dehors des balises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p class="aeretexte">Pour ceux qui ont besoins de bons plans, on vous présente ..... (contenu de l'article) </p>
    Or, moi je ne veux afficher que ce qu'il y a dans la balise :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p class="aeretexte">Pour ceux qui ont besoins de bons plans, on vous présente ..... (contenu de l'article) </p>
    Et le plus etrange c'est que ce contenu se situe apres pleins d'autres balises ....
    ce qui m'etonne n'est pourquoi lui car jai pleins dautre contenus avant .... et apres .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <tr>
            <td valign="middle"><h4><span class="critere">Site </span> </h4></td>
            <td><a href="www.site.fr" target="_blank">www.site.fr</a></td>
          </tr>

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    snif j'ai testé là, je n'arrive pas à changer la done =(

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,
    Citation Envoyé par alain31tl Voir le message
    Bonjour

    Pourquoi pas les regex rawsrc ?
    C'est juste pour ma gouverne.
    Très simple :
    - les regex sont faits pour parser des chaines pas un langage structuré
    - la richesse voire la complexité du html va t'obliger à avoir très vite recours à des patterns imbuvables
    - le html peut être mal formé, certaines balises mal fermées...
    - la gestion du tag de clôture est généralement un vrai casse-tête

    -> des regex sur du html, c'est le mal

  9. #9
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,
    Citation Envoyé par kairi084 Voir le message
    snif j'ai testé là, je n'arrive pas à changer la done =(
    Il se peut très bien que ton html soit mal formé.
    Après c'est de la bidouille.
    Voici ce que cela donne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
     
    $text = <<<HTML
    
    <div class="resume">
    <table>
    
                   <tr>
                        <td class="icon">
                            <img src="images/tadin.gif" />
                        </td>
                        <td class="apo">
                            <div>
    
                                Taille: <strong>4.8 Mo </strong><br>
                                Version: <strong>1.1</strong><br>
    
                            </div>
    
                        </td>
                        <td >
                            Société: Service d'Information du Gouvernement</a>
    
                     </td>
    
    
        </tr>
               </table>
    
    </div>
    <p class="aeretexte">Pour ceux qui ont besoins de bons plans, on vous présente ..... (contenu de l'article) </p>
    HTML;
     
    $filtered = preg_replace('@<div\s*class="resume".*[^>]*?>.*?</div>[^<p.*aeretexte.*]@si', '', $text);
    var_dump(trim($filtered)); // <p class="aeretexte">Pour ceux qui ont besoins de bons plans, on vous présente ..... (contenu de l'article) </p>
     
    ?>

  10. #10
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Ok rawsrc

    Merci pour ces précisions.

Discussions similaires

  1. Aide sur une fonction sous Visual C++ .NET
    Par mog83 dans le forum C++
    Réponses: 0
    Dernier message: 22/04/2008, 15h17
  2. Demande d'aide sur une expression régulière
    Par bubulemaster dans le forum Débuter
    Réponses: 4
    Dernier message: 03/04/2008, 13h19
  3. Demande d'aide sur une action sur un bouton
    Par Kemanke dans le forum MFC
    Réponses: 4
    Dernier message: 29/06/2007, 16h15
  4. Aide sur une fonction / pbm de manipulation de caractère
    Par captainamerica75 dans le forum Access
    Réponses: 3
    Dernier message: 16/02/2006, 11h54
  5. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40

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