カテゴリ:PHP( 8 )
PHPでRSSを表示させる
PHPのページ内にRSSを整形して埋め込み表示させたい。
そんな時はMagpieRSSを利用すると便利。
JavaScriptを使わないので、JavaScriptオフの環境でも問題ありません。

▼参考サイト
MagpieRSS - PHP で使える RSS パーサー。
※ページ下方にある数々のコメントも非常に参考となります。
Docodemo Headline
※記事の表示数を指定する方法も記載されています。(最新記事5つまで、など)

使う手順は上記サイトでわかりやすく書かれているので、こちらでは表示のプチ整形をしたい人向け情報を記載しておきます。

その1/記事の投稿日時も表示したい
もちろん、RSSに<dc:date>がある場合のみ有効。日付を取得/解析の上で整形されています。
Uta's Dream -どーらくにっき-: Magpie RSS

▼表示サンプル
2006/4/5 (水) 11:23
記事タイトル
-------------------------------------------------
日付だけで良い場合は、
${itemday} <a href=¥"$url¥" target=¥"_blank¥">$title</a>

▼表示サンプル
2006/4/5 記事タイトル
-------------------------------------------------
日付+曜日ならば、
${itemday}$youbi <a href=¥"$url¥" target=¥"_blank¥">$title</a>

▼表示サンプル
2006/4/5(水) 記事タイトル

その2/記事タイトルの文字数を制限表示したい(制限以上の文字は省略)
$title = mb_strimwidth($title, 0, 20, "...", sjis);

上の例は『最初の文字から数えて20バイト目(2バイト文字だと10字)まで表示し、あふれた分は「...」とする』…と言う感じです。
そして、EUC-JPならば sjis→euc にする。
応用として $title を $description に変えると概要の文字数制限表示に。

▼表示サンプル
2006/4/5 これは文字数制限内
2006/4/4 これは文字数制限を超... ←「超えます」の「えます」部分が省略

その3/掲示板のRSS、投稿者名も表示したい
投稿者名が何らかの要素として単体で出力されているなら簡単。
例えば、こちらのRSS出力付き掲示板CGI。
MT312 - PHPスクリプト/携帯対応掲示板 →RSS

<dc:creator>名前1</dc:creator>

と言うように単体で出力されているので利用してみます。
処理としては $title と同じ形で良いと思いますので、
$name = $item['dc']['creator'];
$name = JcodeConvert($name, "EUC-JP", "auto");

こんな感じで $title の近くに追加してあげれば良さそうです。
あとは表示させたい形に整形すれば出来上がり。
${itemday} <a href=¥"$url¥" target=¥"_blank¥" title=¥"from $name¥">$title</a>(by $name)

▼表示サンプル
2006/4/5 記事タイトル(by 名前1)
[PR]
by sozaifan | 2006-04-05 14:23 | PHP
ベーシック認証:手軽にユーザー追加
ベーシック認証は強固でいいんだけど、いまいちユーザー追加が面倒で…という人にぴったりなものを発見。(と言うか私がそうです)
中にはレンタルサーバー側でコントロールパネルで手軽に追加できるようにはしてくれているんですが、telnetにつないでコマンド打たなくちゃならない時は何だか面倒です。

そこで、こちら。

これは便利かも!

ディレクトリにアクセス制限をつける場合、
.htaccess と .htpasswd ファイルを作って制限させる方法がありますが、それらのファイルを自動で作ってくれるスクリプト。
ユーザの追加、削除も簡単。

設置するファイルは1つ。
非常に手軽です。日本語化もされているので使いやすいです。
もちろん、.htpasswdは厳重に扱ってくださいね! 出来れば、public_html(サーバーによって名称は違います)の外側に置いておくのがいいかと…。セキュリティの勉強もした上で利用しましょう。

▼基本はこちら(定番サイト)
ミケネコの htaccess リファレンス
[PR]
by sozaifan | 2004-08-24 09:53 | PHP
PHPファイルを、.htmlで認識させる方法
PHPスクリプトそのものとは少し離れるネタですが…
PHPファイルを、.htmlで認識させる方法を探しています。

通常、test.htmlにアクセスするとHTMLとして認識し表示しますが
これを、PHPファイルとして認識させたいのです。
htaccessの設定で、できないでしょうか?
ちょっと興味を引きました。
何でそんなことするんだろう?という疑問も出されてましたが、SEO対策なのかな?
拡張子をごまかしただけでGooglebotに効果があるかどうかわかりませんが、なかなか面白い試みなのかも。

さて、答えだけ抜き出すと…
AddType application/x-httpd-php .html
これだと「html」ファイル全てがPHP扱いに。
それだと少しばかり全体の表示動作などが重たくなるんじゃないか、ってことで
<Files index.html>
AddType application/x-httpd-php .html
</Files>
指定したファイルだけに適用する、ということで決着したようです。
[PR]
by sozaifan | 2004-08-10 14:28 | PHP
表示ページのメニュー画像はロールオーバーさせておく
いまいち説明しづらいんですが、マウスロールオーバーした時のメニュー画像をラクに使い回すためのもの。
例えば「index.php」へのリンクを張っているメニューボタンが、

カーソルが外れてる時  menu_index_off.gif
カーソルが当たった時  menu_index_over.gif


だと仮定すると、当のindex.phpがページ表示されている時は、ロールオーバーさせなくても自動的に「menu_index_over.gif」を表示させておきたいな、という感じ。

…伝わるでしょうか?(がっくり) とりあえず、必要そうな人にだけどうぞ。
<?php
// 現在表示されているファイル名の取得
$filename = basename($_SERVER['SCRIPT_NAME']);
?>

↑下記の判定用PHPを複数使いたい場合、こうして別途でBODYタグの先頭の方へ入れておくと良さげ。

// ファイル名の判定
<?php
if ($filename=="index.php"){
echo "<img src='images/menu_index_over.gif'>";
}else{
echo "<img src='images/menu_index_off.gif'>";
}
?>
メニュー画像はたいてい複数あると思うので(「トップページ」「更新履歴」「ギャラリー」「コラム」「リンク」…などなど)ファイル名の取得はやっぱ先にやっておいた方が良さそうですね。
[PR]
by sozaifan | 2004-08-10 13:53 | PHP
OS別に内部スタイルを振り分け
この更新履歴を表示している部分だけ、ちょっとレイアウトがタイト。
Macだと10ptでちょうどいい具合だけど、Windowsだと10ptじゃ少し大きい。かといって、10pxはちょっと小さい。11pxがいいんだけど、そうすると今度はMacで汚く表示される。
ああ、Macは10pt、Winは11pxで表示されればいいのに…。

などと言う、部分的な内部スタイルだけを単純にWinかMacかで振り分けたい場合。
CSSファイルを2つ用意して振り分けするほどでもないんだよなぁ、って時にどうぞ。
※下記の応用でCSSファイル自体の振り分けも可能です。

例えば…

ここまで、普通の本文です。
★この行だけ幅がタイトだったりして、レイアウトが崩れるのも困るから微妙にフォントサイズを振り分けたいな。
ここからは、また普通の本文です。

…という場合には、こんな感じ。

ここまで、普通の本文です。<br>
<?php
if( preg_match( "/Windows/", $_SERVER['HTTP_USER_AGENT'] ) )
{
// Windows用のフォントサイズ小
echo("<div style='font-size:11px'>");
}
elseif( preg_match( "/Mac/", $_SERVER['HTTP_USER_AGENT'] ) )
{
// Mac用のフォントサイズ小
echo("<div style='font-size:10pt'>");
}
else
{
// その他用のフォントサイズ小
echo("<div style='font-size:x-small'>");
}
?>
★この行だけ幅がタイトだったりして、レイアウトが崩れるのも困るから微妙にフォントサイズを振り分けたいな。
</div>
ここからは、また普通の本文です。
といった具合です。
ブラウザや携帯の種類ごとに表示させるHTMLページを分岐させる、などの場合は「レッツPHP!」が参考になります。
[PR]
by sozaifan | 2004-08-10 13:14 | PHP
CSSの切り替え
JavaScriptでの切り替えだと、JavaScriptがオフの時に動作しない。
それなら、PHPにやってもらえば早いんじゃない?
と言うことで探してみたら、ちらほら見つけたのでご紹介。

PHP 版 CSS チェンジャー(CSS切り替え)
スタイルシートチェンジャー
Script Laboratory [CGI / PHP - CSS (Change Style Sheet)]

お好きなものをどうぞ。
[PR]
by sozaifan | 2004-08-10 12:54 | PHP
ファイル情報の表示
指定したファイルのファイルサイズと最終更新日を自動的に表示しようというもの。バイトを自分でMBに変換とか何だか面倒だったのでラクしよう。という目的だったのはいいけど、参考になるサンプルソース探しにやたら時間がかかった一品。

<?php
// チェックするファイル
$file = './sample.jpg';

// ファイルサイズの取得
function DownloadSize($file) {
$size = filesize($file);
$sizes = Array('バイト', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
$ext = $sizes[0];
for ($i=1; (($i < count($sizes)) && ($size >= 1024)); $i++) {
$size = $size / 1024;
$ext = $sizes[$i];
}
return round($size, 2).$ext;
}

// ファイルサイズの表示
print ("※ファイルサイズ:" . DownloadSize($file) . "/");

// ファイルの最終更新日の取得と表示
$last = date("Y年m月d日", filemtime($file));
echo "最終更新日:$last";
?>

表示結果サンプル
※ファイルサイズ:8.9KB/最終更新日:2004年08月09日

単位も適切なものを自動判別して表示してくれるので便利です。
[PR]
by sozaifan | 2004-08-10 12:35 | PHP
はじめに
ここでは便利そうな短めのソースやURLをサンプル用に収集したもの、あるいは、サンプルを元にカスタマイズしたものをご紹介。
私がカスタマイズしたものについては間違っている可能性も大なので要注意!
あくまでも個人的な備忘録として書き留めているので誤作動しても責は負えませぬ。
[PR]
by sozaifan | 2004-08-10 12:30 | PHP