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 :

Flux RSS : Comment masquer les shortcodes (ici, "caption")


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Flux RSS : Comment masquer les shortcodes (ici, "caption")
    Bonjour à tous,
    j'ai utilisé le WpGet de Peter Unfold : http://peter.upfold.org.uk/projects/wpget, qui marche très bien pour mettre en place un flux rss sur mon site, mais dans le contenu d'un article, il affiche également les shortcodes caption (légendes d'images), ce que je voudrais éviter :

    RECENT POSTS :

    Hitting the road with Shane Conroy
    Hi!
    I'm Shane Conroy 22 years young from Berkley Vale, NSW and I'm going on a roadtrip around the country.
    [caption id="attachment_1190" align="aligncenter" width="300"]Shane Conroy - Youngroys Adventures[/caption]
    I'm chasing my childhood dream of escaping the everyday...
    Posted on 20/02/2014 10:29 by wetravelcoblog.
    1 comment.
    Quelqu'un aurait une solution?
    merci d'avance!

    petite précision : les articles du flux sont ceux d'un blog wordpress, et le flux est affiché sur un site distant.

  2. #2
    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
    En gros, tu veux supprimer les blocs [caption] et [/caption].
    Tu veux aussi supprimer le texte contenu entre les deux blocs ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Celira Voir le message
    En gros, tu veux supprimer les blocs [caption] et [/caption].
    Tu veux aussi supprimer le texte contenu entre les deux blocs ?
    Oui c'est ça! je veux supprimer les balises ET le texte contenu entre les balises.
    Sais-tu comment faire? Merci de ta réponse!

  4. #4
    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
    On doit pouvoir faire ça avec une regex et un appel à preg_replace.
    Quelque chose comme ça devrait marcher (mais ya sans doute mieux, chuis loin d'être une experte en regex) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#\[caption([^\]]*)]([^\[]*)\[/caption\]#", "", $input_lines);

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse!

    J'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace('#\[caption[^\]]*\]([^\[]*)\[/caption\]#','', $content);
    Ça masque bien le premier shortcode caption de chaque contenu d'article mais pas les autres :
    Je ne vois pas pourquoi..une idée?

    Voici ce que ça donne :

    The Roadtrip Diaries - The end of the beginning...
    Our last day of The Roadtrip Diaires project started with an early morning hike down to treachery. (ICI LE 1ER CAPTION EST BIEN MASQUÉ) The Frenchies got wet and surfed, while we enjoyed being immersed in the yellow, blue and green contrast of nature that surrounded us.[caption id="attachment_1157" align="aligncenter" width="300"] Yet...
    Posted on 14/12/2013 06:01


    Merci pour ton aide

    Voici la fonction concernée :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    function formatWPContent($wpdata, $chars, $stripimages, $stripembed, $stripscript, $striplinks) { 
     
    	if ($chars > 0) {
    		$content = stripslashes($this->html_substr($wpdata['post_content'], $chars, 20));
    		$content = $this->convert_smart_quotes($content);
    		$content = preg_replace('/(\r\n|\n|\r)/', '', $content);
    		 $content = preg_replace("#\[caption([^\]]*)]([^\[]*)\[/caption\]#", " ", $content);	
    	}
    	else {
    		$content = $wpdata['post_content'];
    		$content = $this->convert_smart_quotes($content);
    	}
     
    	// strip images from posts
    	if ($stripimages) {
    		$content = preg_replace('#</?img[^>]*>#is', '<!--img-->', $content);
    	}
     
    	if ($stripembed) {
    		// strip embeds from posts
    		$content = preg_replace('#</?embed[^>]*>(.+</embed[^>]*>|)#is', '<!--embed-->', $content);
    	}
     
    	if ($stripscript) {
    		// strip javascript from posts
    		$content = preg_replace('#</?script[^>]*>(.+</script[^>]*>|)#is', '<!--script-->', $content);
    	}
     
    	if ($striplinks) {
    		// strip any links (or other <a> tagged content) from posts
    		$content = preg_replace('#</?a[^>]*>#is', '<!--link-->', $content);
    		$content = preg_replace('#</?\/a[^>]*>#is', '<!--endlink-->', $content);
    	}	
     
     
    	?>
    	<div class="box_latest_posts"><?php
    	echo '<a href="'.$wpdata['guid'].'"><strong>'.$wpdata['post_title'].'</strong></a></br>
    	<span class="description_latest_posts">'.nl2br($content).'</span>
    	<span class="date_latest_posts">Posted on '.date($this->dateformat, strtotime($wpdata['post_date'])).'</span></br>';
     
    	if ($this->showauthor)
     
    		//echo ' by '.$wpdata['display_name']; // print author name
     
    	//echo '.<br />'.$wpdata['comment_count'];
     
     
    	if ($wpdata['comment_count'] > 0) {
    		$jump = "#comments";
    	}
    	else {
    		$jump = "#respond";
    	}
    	if ($wpdata['comment_count'] == 1) {
    		$comment = "comment";
    	}
    	else {
    		$comment = "comments";
    	}
     
    	//echo ' <a href="'.$wpdata['guid'].$jump.'">'.$comment.'</a>.';
     
    	?></div><?php
     
    } // end formatWPContent()

  6. #6
    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
    Hum... a priori, tu n'as que la 1ere moitié du caption à cause d'un système qui tronque le message.
    Or ce que recherche la regex, c'est un texte entre les 2 balises caption. Du coup, elle ne repère pas le morceau où il n'y en a qu'une moitié

    Il faudrait donc gérer le cas du caption commencé et pas terminé, mais pour ça, il faut déterminer où on s'arrête.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    hum bien vu merci!
    en effet en tronquant le regex de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace('#\[caption([^\]]*)]([^\[]*)#i', ' ', $content);
    ça masque l'ouverture de caption, son contenu mais PAS la fermeture.

    Comme ceci :

    Hitting the road with Shane Conroy
    Hi!I'm Shane Conroy 22 years young from Berkley Vale, NSW and I'm going on a�roadtrip around the country. [/caption]I'm chasing my childhood dream of escaping the everyday rat race and off to explore the country in a campervan. [/caption]Working...
    Posted on 20/02/2014 10:29

    The Roadtrip Diaries - The end of the beginning...
    Our last day of The Roadtrip�Diaires project started with an early morning hike down to treachery. [/caption]The Frenchies got wet and surfed, while we enjoyed being immersed in the yellow, blue and green contrast of nature that surrounded us.
    Posted on 14/12/2013 06:01

    The Roadtrip Diaries - Exploring caves , sandboarding , fishing and a magical sunset!
    Hey guys you want to go explore a sea cave? A few puzzled looks but the group agrees. [/caption]We make out way down a steep, slippery goat track�down to the rocks below. The tide was�to high to enter via the main entrance so we opt for the backdoor..The travellers look at a narrow passage and question whether or not this is a good...
    Posted on 14/12/2013 05:37

    The Roadtrip Diaries - Something bigger than us...
    Another early rise, this time for a Dorrigo sunrise. In this moment, we felt connected to something that words cannot describe something that is bigger than everything that ever was or will ever be. [/caption]
    Posted on 14/12/2013 05:10
    N'est-il pas possible de faire 2regex qui se complètent ?
    celui-ci, + un autre masquant simplement la balise de fermeture de caption [/caption] ?

    Ça n'est peut-être pas le plus propre mais je ne vois pas comment définir où arrêter le regex sachant que le texte sera toujours coupé à partir du 450eme caractères.. le shortcode caption pourrait en effet commencer n'importe où entre le 1er et le 450e caractère, dépendant du placement de l'image dans le contenu de l'article d'origine.

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/08/2005, 08h17
  2. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03

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