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 :

distinguer les balises HTML [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 50
    Points : 34
    Points
    34
    Par défaut distinguer les balises HTML
    Bonjour,

    Je rencontre actuellement un problème pour un script que j'élabore actuellement.


    Principe du Script :

    Je souhaite, séparer le contenu "Textuel" (sans liens hypertexte) du contenu "Media" (donc regroupé les images, vidéos etc..), puis afficher 60% du contenu textuel de la chaine..


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p>Salut dans cette <a href=lol>article</a> il y à une superbe photo <img src="lolilol.com"> voila à bientot!</p>
    Sa donnerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Partie 1:
    <img src="lolilol.com">
     
    Partie 2:
    <p>Salut dans cette article il y à une superbe photo voila à bientot!</p>

    Pour cela, j'utilise les regex sous preg_replace..


    Voici la fonction :
    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
    <?
        function Cut($String) 
        { 
    	$String = preg_replace("@\<a[\!]*?[^\[\]]*?\>@", "", $String); // Supression des <a *>
    	$String = preg_replace("</a>", "", $String);					// Supression des </a>
     
    	$StringNoMedia = preg_replace("@\<[\!]*?[^\[\]]*?\>@", "", $String); // Supression de toutes les balises
     
    	$StringCut = explode(" ", $StringNoMedia);
    	$words_to_count = strip_tags($StringNoMedia); 
     	$pattern =  "/[^(\w|\d|\'|\"|\.|\!|\?|;|,|\\|\/|\-\-|:|\&amp;amp;|@)]+/"; 
     	$words_to_count =  preg_replace ($pattern, " ", $words_to_count); 
     	$words_to_count = trim($words_to_count); 
     	$total_words = count(explode(" ",$words_to_count)); 
    	$cut = $total_words * 0.6;
    	$NewString = "";
     
    		for($i=0;$i<$cut;$i++) {
    			$NewString .= " ".$StringCut[$i];
    		}
    	$NewString .= "";
    	$i = 0;
     
    	return $NewString; // Affichage des données non "Media"
    	}

    Mais pour afficher UNIQUEMENT les Média type "Vidéos / Images", je n'arrives absolument pas à les afficher (j'ai essayé sous Eregi avec la ligne suivante mais sans succès)
    Eregi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Media = eregi("\<img (.*)\>",$String, $img);
    Est il possible d'avoir un bon petit coup de main?

    Merci!

  2. #2
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonjour Magnat,

    Tu devrais regarder la doc de strip_tag qui est beaucoup plus puissants qu'on le crois, ce qui pourrais alléger ta partie "récupération du texte".

    Sinon pour ton regex essaye avec quelque chose comme ça (pour éviter de récupérer plus que l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Media = eregi("<img [\\/]*/>",$String, $img);
    Il y a 2 "\" la première pour echaper dans la chaine, la suivantes pour echaper le "/" dans la regex. Ce qui permet de prendre tout les caracteres différents de "/" celui la même qui ne devrais pas apparaitre avant la fin de ta balise.

    Bonne continuation !

  3. #3
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    ReBonjour,

    En fait je me suis rendu compte que cette expression pose problème si ton url ou tout autre partie de la balise comporte des /

    Je te conseil donc d'utiliser preg plutôt que ereg avec lequel tu pouras utiliser le modificateur U (regarde ici pour plus d'infos) ce qui donnerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('/<img.*>/U', $String, $img);
    Voila j'espere t'avoir été utile !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    Merci à toi Korri, tout marche parfaitement !!!! Smouak' !!! =)

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

Discussions similaires

  1. Mettre les balises HTML quand il faut
    Par v4np13 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/05/2006, 10h02
  2. [RegEx] Supprimer les balises HTML
    Par hisy dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2006, 17h10
  3. Script pour enlever les balises html
    Par Scratch48 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/11/2005, 17h16
  4. [XSL] conserver les balises html
    Par krappa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/07/2005, 15h14
  5. forcer xsl à interpréter les balises html
    Par canal68 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/07/2005, 15h02

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