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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En gros, tu veux supprimer les blocs [caption] et [/caption].
    Tu veux aussi supprimer le texte contenu entre les deux blocs ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/08/2005, 09h17
  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, 15h03

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