0

クライアントの RSS フィードを解析するために SimplePie を使用しようとしています (クライアントは Washington Post の著者です)。

ドキュメントを読み、サンプル コードを参照として使用した後、サイトに解析されたフィードを取得できましたが、現在、アポストロフィ文字がデコードされないという問題が発生しています (' は ' として表示されます)。

SimplePie の FAQ で提案されている解決策を使用して、この問題を解決しようとしました。

残念ながら、これらのどれも私の問題を解決していません。

以下は、RSS フィードを解析するために使用しているコードです。

<?php

require_once('php/autoloader.php');

$feedJB = new SimplePie();
$feedJB->set_feed_url('http://washingtontimes.dynamic.feedsportal.com/pf/637323/communities.washingtontimes.com/neighborhood/feeds/latest/status-update/');
$feedJB->init();
$feedJB->handle_content_type();

$feedRB = new SimplePie();
$feedRB->set_feed_url('http://washingtontimes.dynamic.feedsportal.com/pf/637323/communities.washingtontimes.com/neighborhood/feeds/latest/2nd-golden-era-advertising/');
$feedRB->init();
$feedRB->handle_content_type();

?>

これは、ページ上の出力コードです。

<!-- Left -->
            <li class="left">
                <h3>Recent Posts</h3>
                <ul class="feed-list">
                    <?php foreach ($feedJB->get_items(0, 5) as $item): ?>
                    <li>
                        <strong><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></strong>
                        <small>Posted on <?php echo $item->get_date('j F Y'); ?></small>
                    </li>
                    <?php endforeach; ?>
                    <li><h4><a href="<?php echo $feedJB->get_permalink(); ?>">Read more articles by Jeff</a></h4></li>
                </ul>
            </li>
            <!-- /Left -->

            <!-- Right -->
            <li class="right">
                <h3>Recent Posts</h3>
                <ul class="feed-list">
                    <?php foreach ($feedRB->get_items(0, 5) as $item): ?>
                    <li>
                        <strong><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></strong>
                        <small>Posted on <?php echo $item->get_date('j F Y'); ?></small>
                    </li>
                    <?php endforeach; ?>
                    <li><h4><a href="<?php echo $feedRB->get_permalink(); ?>">Read more articles by Rob</a></h4></li>
                </ul>
            </li>
            <!-- /Right -->

これは、自分のマシン (MAMP を実行する Mac Pro Lion) と Web サーバー (Apache 2.2.22 および PHP 5.2.17 を実行する Linux) でローカルにテストしました。

当面は、次のリンクにアクセスしてこれを表示することもできます: http://clients.josephmainwaring.com/statuscreative/#!columns.php

文字エンコーディングの問題に対処するための提案があれば、大歓迎です。

4

1 に答える 1

0

Washington Post のフィードは、UTF-8 文字が含まれている場合でも、すべて ISO-8859-1 として提供されていることがわかりました。SimplePie は使用しませんが、フィードをフェッチするたびに、次の関数を実行します。ここ$xmlで、 はフィードのテキスト、 は$urlフィードの URL です。

function feed_fix_broken ( $xml, $url ) {
  $xml = iconv('UTF-8', 'UTF-8//IGNORE', $xml );
  $broken = array ('washingtonpost.com' => 'ISO-8859-1');
  foreach ($broken as $domain => $encoding) {
    if (stristr($url, $domain)) {
      $xml = iconv( 'UTF-8', $encoding.'//TRANSLIT', $xml );
    }
  }
  return $xml;
}

これにより、可能であれば、UTF-8 でエンコードされたエンティティが対応する ISO-8859-1 に音訳されます。

FeedDemon では、「チャベス」がおかしいことに注意してください...

しかし、私はそれを正しく持っています。

しかし、私はそれを正しく持っています

于 2012-08-13T17:57:38.357 に答える