web-dev-qa-db-ja.com

コンテンツがRSSフィード経由で配信される場合にのみ、ブロガーがBRタグを配置するのはなぜですか?

新しいブログRSSフィードの使用に問題があります。 SyntaxHighlighterでフォーマットされたいくつかのコード例を含む投稿(最初の投稿)を書きました。コードサンプルを貼り付けるには、WYSIWYGからHTMLビューに切り替えて、このようなpreタグ内にコードを配置します(心配しないで、h4タグがスクリーンショットの上の行に開かれます範囲):

formatting code example on the blog

問題は、そのようなpreタグに、後でRSSフィード経由でアクセスすると、改行文字の代わりにbrタグが含まれることです。以下は、適切なRSSソースコードのスクリーンショットです。

RSS source code with unwanted BRs

最も重要なものwwwを介してアクセスする場合、投稿htmlは正常にフォーマットされ、brspre。 wgetでブログの投稿をダウンロードすることで、それを確認しました。だから、これはSyntaxHighlighterの問題でも、ブログ投稿の保存時の「改行」のフォーマットでもないと思う。

私のブログを雇用主のブログに集約したいので、これは本当の問題です。そのため、コード例のすべてのフォーマットが壊れています。

基本的な質問は次のとおりです。RSS経由で提供される不要なbrsを取り除く方法は?

私の最も奇妙な友人もそのような集約にブロガーを使用しており、彼はそのような問題はありません。彼のRSSフィードをチェックしましたが、preタグ内にbrsはありません。また、ブログの設定を比較しました。しかし、手がかりは見つかりませんでした。

最後に、RSSから提供されるコンテンツもHTMLエンコードされるようになりました。よく覚えていれば、以前はそうではありませんでした。

UPDATE:この問題の解決策は見つかりませんでした。そこで、フィードソースをフィルタリングする短いPHPスクリプトを作成しました。誰かがそれを役に立つと思うかもしれませんので、ここにあります:

<?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
?>

フィルタリングされたフィードの結果は、 URL で取得できます。一見すると違いはありませんが、ソースは違います。

最後に言及します。ブロガーには、構成設定の中に「改行の変換」フラグが少し前にあったことがわかりました。現在、新しいポストレベル設定に置き換えられています。

enter image description here

私の友人のブログは、設定パネルから消える前に「改行の変換」フラグが設定されていたため、期待どおりに機能すると信じています。おそらくグローバル設定として、RSSにも影響を与えます。これらの新しいポストレベルの設定は、RSSフィードにはまったく影響しません。まあ、それは仮定にすぎませんが、この矛盾の手がかりは他にありません...

2
topr

RSSエントリは、HTMLエディターページに作成しないでください。デフォルトの投稿エディタにする必要があります。

OR

右パネルに改行のタグを選択するオプションがあります。あなたがしなければならないのは、それを外すことです。

1
Anz Joy