PHPの最近のブログ記事

1.SSHでサーバと接続

FTPクライアントを使ってASCIIモードでアップロードしてもまくいかなかったのでSSHを使います。

Tera Termで接続。
ホスト:○○○.sakura.ne.jp

ユーザー名、パスワードを入力して接続。

 

.バイナリファイルをコピーしてリネーム

さくらのPHPはcgi版なので、binの下のphp-cgiを使う。
なのでphp-cgiをコピーしてphp.cgiにリネームします。

cp /usr/local/php/5.2.10/bin/php-cgi /home/アカウント名/www/php.cgi

3.パーミッション変更

% chmod 705 php.cgi

4..htaccess設置

 移動
cd /home/アカウント名/www/

.htaccess新規作成
% vi .htaccess

iを押してINSERTモードにします。
以下の3行をコピーして、SSHクライアント上でCtrl+Vで貼り付けます。
DirectoryIndex index.html index.php .ht
Action myphp-script /php.cgi
AddHandler myphp-script .php .html

貼り付いたら

INSERTモード解除
Escキー押す

保存して編集終了
% :wq

 

外部の RSS を PHP で取得する

RSSの読み込みに必要なもの

MagpieRSSからmagpierss-0.71.1.tar.gz をダウンロードして展開し、下記のファイルを

表示させたいファイルと同じディレクトリへアップロードする。

 

  • rss_cache.inc
  • rss_fetch.inc
  • rss_parse.inc
  • rss_utils.inc
  • extlib ←これはフォルダ
  •  

RSS を表示させたいファイルへ下記のコードを記述して完了。

 

<?php
error_reporting(E_ERROR);
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://〇〇〇.ne.jp/rss20.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
echo "<h3>$title</h3>\n";
echo "<dl>\n";
foreach ($rss->items as $item ) {
$title = htmlspecialchars($item['title']);
$description = htmlspecialchars($item['description']);
$url = htmlspecialchars($item['link']);
echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd>$description</dd>\n";
}
echo "</dl>\n";
?>

 

太字の部分は取得したいRSSファイルのURLへ書き換える。

 

<文字化け>

今回表示させたいファイルが「hift_JIS」で書かれており、

そのまま表示させると文字化けをおこしてしまった。

そこで

UTF-8を強制的にSJISへ変換

上記コードを

<?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>

で囲む。

つまり

<?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

<?php
error_reporting(E_ERROR);
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://in-novare.com/index.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "SJIS-win", "UTF-8");
echo "<h3>$title</h3>\n";
echo "<dl>\n";
foreach ($rss->items as $item ) {
$title = htmlspecialchars($item['title']);
$description = $item['description'];

$url   = htmlspecialchars($item['link']);
echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd>$description</dd>\n";
}
echo "</dl>\n";
?>

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>
 

と記述する。

 

 

 

UTF-8を強制的にSJISへ変換

phpファイルの先頭に

 

 <?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

 

を記述し、

phpファイルの最後に

 

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>

と記述する。

 

つまり上記2つの記述で囲めばよい。

1  2  3