web-dev-qa-db-fra.com

Pourquoi blogger place les balises BR uniquement lorsque le contenu est diffusé via un flux RSS?

J'ai un problème avec l'utilisation de mon nouveau flux RSS de blog. J'ai écrit un article (le premier) avec des exemples de code formatés par SyntaxHighlighter. Pour coller un exemple de code, je passe de l'affichage WYSIWYG à l'affichage HTML et je place le code à l'intérieur de la balise pre comme ceci (ne vous inquiétez pas, la balise h4 a été ouverte une ligne au-dessus de la zone de capture d'écran):

formatting code example on the blog

Le problème est que cette balise pre, lorsqu’elle est ultérieurement utilisée via le flux RSS, contient les balises br au lieu des caractères de nouvelle ligne. Vous trouverez ci-dessous une capture d'écran du code source RSS adéquat:

RSS source code with unwanted BRs

Quel est le plus important lorsqu’on y accède via www, le post HTML est correctement formaté, non brs à l’intérieur de pre. J'ai vérifié cela en téléchargeant le billet de blog avec wget. Donc, je crois que ce n'est pas un problème avec SyntaxHighlighter ni un formatage de "nouvelle ligne" sur un article de blog.

C'est un réel problème car je veux agréger mon blog sur le blog de l'employeur et tout formatage d'exemples de code est brisé à cause de cela.

La question de base est la suivante: comment se débarrasser de ces indésirables brs servis via RSS?

Mon ami le plus étrange utilise également le blogueur pour une telle agrégation et il n'a pas ce problème. J'ai vérifié son flux RSS et il n'y a pas de balises brs à l'intérieur pre. Nous avons également comparé les paramètres de nos blogs. Cependant, nous n'avons trouvé aucun indice.

Dernière chose: je vois que le contenu diffusé à partir de RSS est désormais codé en HTML. Si je me souviens bien, ce n'était pas le cas auparavant.

UPDATE: Je n'ai trouvé aucune solution à ce problème, ni aide nulle part. J'ai donc écrit un court script PHP pour filtrer la source du flux. Quelqu'un peut le trouver utile alors voici:

<?php
$url = 'http://blog.tamashumi.com/feeds/posts/default';
$pre_pattern = '/(\&lt;pre.*?"\&gt;)(.*?)(\&lt;\/pre\&gt;)/';
$br_pattern = '/\&lt;br \/\&gt;/';

function br2nl($match) {
    global $br_pattern;
    $nobrs = preg_replace($br_pattern, "\n", $match[2]);
    return "$match[1]$nobrs$match[3]";
}

$content = file_get_contents($url);
$content = preg_replace_callback($pre_pattern, 'br2nl', $content);

header('Content-type: application/atom+xml');
echo preg_replace($br_pattern, "&lt;br/&gt;\n", $content); // adding NLs
?>

Un résultat d'aliment filtré peut être obtenu sous URL . Au premier coup d'œil, la source ne diffère pas.

Dernière chose à mentionner. J'ai constaté que blogger avait il y a quelque temps un indicateur 'convertir les sauts de ligne' parmi les paramètres de configuration. Il est remplacé maintenant par de nouveaux paramètres post-niveau:

enter image description here

Je pense que le blog de mes amis fonctionne comme prévu car il avait le drapeau "Convertir les sauts de ligne" avant qu'il ne disparaisse du panneau de configuration et probablement comme paramètre global, il a également une influence sur le RSS. Ces nouveaux paramètres post-niveau n’affectent en aucun cas le flux RSS. Bien, ce n'est qu'une hypothèse, mais je n'ai trouvé aucun autre indice pour cette incohérence ...

2
topr

L'entrée RSS ne doit pas être insérée dans la page de l'éditeur HTML. Il devrait être fait dans l'éditeur de publication par défaut.

OR

Il y a une option dans le panneau de droite pour choisir balise pour saut de ligne. Tout ce que vous avez à faire est de le décocher.

1
Anz Joy