//============================================================ // 変数の初期化 //============================================================ $channel = array(); $items = array(); $num = trim($_REQUEST['num']); $xml = trim($_REQUEST['xml']); $atom = empty($_REQUEST['atom']) ? 0 : 1; $site_en = trim($_REQUEST['site_en']); $xml_en = rawurlencode($xml); $xml_ht = htmlspecialchars($xml, ENT_QUOTES, 'Shift_JIS', false); //============================================================ // RSS読み込み //============================================================ if ($xml) { $rss = p2GetRSS($xml, $atom); if ($rss instanceof XML_RSS) { clearstatcache(); $rss_parse_success = true; $xml_path = rss_get_save_path($xml); $mtime = filemtime($xml_path); $channel = $rss->getChannelInfo(); $items = $rss->getItems(); $fp = fopen($xml_path, 'rb'); $xmldec = fgets($fp, 1024); fclose($fp); if (preg_match('/^<\\?xml version="1.0" encoding="((?i:iso)-8859-(?:[1-9]|1[0-5]))" ?\\?>/', $xmldec, $matches)) { $encoding = $matches[1]; } else { $encoding = 'UTF-8,CP51932,CP932,JIS'; }
$site = UrlSafeBase64::decode($site_en); } else { $purl = @parse_url($xml); if (is_array($purl)) { if (array_key_exists('host', $purl)) { $site .= $purl['host']; } if (array_key_exists('path', $purl)) { $site .= '.' . basename($purl['path']); } if (array_key_exists('query', $purl)) { $site .= '?' . $purl['query']; } } $site = basename($xml); $rss = p2GetRSS($xml); if ($rss instanceof XML_RSS) { $channelInfo = $rss->getChannelInfo(); if (is_array($channelInfo) && array_key_exists('title', $channelInfo)) { $site = mb_convert_encoding($channelInfo['title'], 'CP932', 'UTF-8,CP51932,CP932,ASCII'); } } } } // ログに記録する変数を最低限のサニタイズ $xml = preg_replace_callback('/\\s/', 'rawurlencode', $xml); $site = preg_replace('/\\s+/', ' ', $site); $site = p2h($site); // }}} // {{{ 読み込み // rss_pathファイルがなければ生成