プロが教える店舗&オフィスのセキュリティ対策術

MagpieRSSを使って、複数のRSSを取得するように以下のようなPHPを、
http://www.eternalheart.com/archives/2006/04/08/ …
用意しました。。が、以下のように文字化けします。。


縺吶°縺倥c繧・/a> [get!]
└ test
└ 繧ッ繝ェ繝・け蜍滄≡
└ 繧医▲縺。繧・s縺ィ縺薙↓螂ウ蜈占ェ慕函
雖∵律險・/a> [get!]
└ 貍ォ逕サ蝟ォ闌カ
└ 蟷ク縺帙懊懌・
└ 譌・譛ャ遘大ュヲ譛ェ譚・鬢ィ
縺。繧・▲縺ィ蟇・j驕・/a> [get!]
└ 隕九k莠コ縺・k縺ョ縺九↑・溽エ・繝カ譛医・c
└ ・ォ・ッ・ュ・・縲・ォ・ッ・ュ・・縲・」・ャ・オ・「
└ 邨仙ゥ壼シ上・/a>
縺ョ縺倥・縺倥・縺・>貉ッ縺縺ェ・・/a> [get!]
└ 繝槭ヨ繝ェ繝ァ繝シ繧キ繧ォ
└ 繝励Ο繝ャ繧ケ
└ 縺願干繧ゅi縺」縺・/a>
縺ョ繧薙・縲懊j縺セ縺」縺溘懊j笙ェ [get!]
└ 蜈・髯「繝サ繝サ謇玖。薙・繝サ繝サ騾髯「・・シ・/a>
└ 縺イ縺輔・縺・/a>
└ 縺・h縺・h
隨醍ャ代〒縺ョ繧ゅ・繧ゑシ・/a> [get!]
└ 豎溘ヮ蟲カ縺ョ霑代¥縺ォ縺雁コ励r繧ェ繝シ繝励Φ
└ 譛霑代・縺セ縺」縺ヲ縺セ縺吶・/a>


It was unacquirable.
RSS FEED を取得できませんでした、詳細は下記。
Error Message!


It was unacquirable.
RSS FEED を取得できませんでした、詳細は下記。
Error Message!
MagpieRSS: Failed to fetch http://spaces.msn.com/takashifuse/feed.rss (HTTP Response: HTTP/1.1 404 Not Found )
縺。繧・>鬟イ縺ソ縲鯉シヲ・イ・。・ュ・・縲・/a> [get!]
└ New Blog縲螳梧・
└ ・墓怦縲・ァ・キ
└ 繧ェ繝ャ繝ウ繧ク繧ク繝ウ縲繝上ル繝シ繝壹ャ繝代・

おそらく、UTF-8とSJISが入り混じっているのが原因だと思うのですが、PHPの中で、エンコードをUTF-8をSJISにする方法はないでしょうか。
初心者ですのでよろしくおねがいいたします。

A 回答 (1件)

この回答への補足

おそらく、このようなコードを入れればいいのでしょうが、、
どこに入れたらよいのでしょうか??

$str = mb_convert_encoding($str, "S-JIS", "UTF-8");

採用しているPHPです。

<?php
error_reporting(E_ERROR);
require_once 'rss_fetch.inc';
require_once 'rss_utils.inc';
$num_items = 3;
$days = 3;
define('MAGPIE_OUTPUT_ENCODING','UTF-8');
define('MAGPIE_FETCH_TIME_OUT', 5);
define('MAGPIE_CACHE_ON', true);
define('MAGPIE_CACHE_DIR', '(magpieRSSのパス)/rss/cache'); define('MAGPIE_CACHE_AGE', 3600);
$pat = "/^(?:\D{3})\,\s(\d{2})\s(\D{3})\s(\d{4})\s(\d{2}):(\d{2}):(\d{2})\s([-+]\d{4}|\D{3})/";
$month_list = array(
"Jan" => "01", "Feb" => "02", "Mar" => "03", "Apr" => "04", "May" => "05", "Jun" => "06",
"Jul" => "07", "Aug" => "08", "Sep" => "09", "Oct" => "10", "Nov" => "11", "Dec" => "12"
);
function conv_date($date_str) {
global $pat, $month_list;
if (preg_match($pat, $date_str, $match)) {
list($year, $month, $day, $hours, $minutes, $seconds, $tz) =
array($match[3], $match[2], $match[1], $match[4], $match[5], $match[6], $match[7]);
foreach($month_list as $conv_month=>$replace) {
if(preg_match("/^$conv_month$/", $month)){
$month = $replace;
break;
}
}
$date_str = $year . '-' . $month . '-' . $day . 'T' . $hours . ':' . $minutes . ':' . $seconds . $tz;
}
return $date_str;
}
function convert_sp_char ($char,$arg) {
if (preg_match("/<|>|\"|&/", $char)) {
if ($arg == "2") {
$char = strip_tags("$char");
}
$char = htmlspecialchars("$char");
}
if ($arg == "1") {
$char = mb_strimwidth($char, 0, 30,"…",utf8);
}
return $char;
}

function convert_desc ($desc) {
$desc = trim ($desc);
$desc = nl2br ($desc);
$desc = strip_tags($desc);
$desc = str_replace("\n", "", $desc);
$desc = mb_strimwidth ($desc, 0, 150,"…",utf8);
(description)の表示する文字数
return $desc;
}
function diff_date ($date,$days) {
$rssdate = strtotime("$date");
$today = strtotime(date("Y/m/d H:i"));
$diff = date("U", ($today - $rssdate))/86400;
if ($days > $diff) {
echo ' <img rc="http://www.*****.com/img/upnew.gif" alt="New" />';
}
return $date;
}

$rss_cache = '<span class="cache"> [cache]</span>';
$rss_get = '<span class="cache"> [get!]</span>';
$e_message = <<<DATA
<img src="error.png" alt="It was unacquirable." title="It was unacquirable." width="80" height="15" /></a> <h3>It was unacquirable.</h3>
<ul>
<li>RSS FEED を取得できませんでした、詳細は下記。</li>
<dd>Error Message!<br />
DATA;
?>
<?php
$men = array (
"http://****.****.com/index.xml",
"http://******.*****.****com/?xml",
"http://******.******.****.com/?xml",
"http://******.*****0**2.com/?xml",
"http://**.***.***/?mode=rss",
"http://******.***.***/***********/feed.rss",
"http://blog.********.jp/s**********/index.rdf"
);
?>
つづく

補足日時:2007/07/10 22:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!