PHPの初歩です。
PHPでディレクトリの操作をする場合、ディレクトリごと、
ごっそり削除したいという場合があると思います。
PHP Manualから引用します。
functionを下記のように設定し
<?php
function remove_directory($dir) {
if ($handle = opendir("$dir")) {
while (false !== ($item = readdir($handle))) {
if ($item != "." && $item != "..") {
if (is_dir("$dir/$item")) {
remove_directory("$dir/$item");
} else {
unlink("$dir/$item");
echo " removing $dir/$item<br>\n";
}
}
}
closedir($handle);
rmdir($dir);
echo "removing $dir<br>\n";
}
}
?>
任意の場所から
呼び出せばOK
remove_directory("ディレクトリへのパス");
前回の「PHP5 SimpleXMLでRSSフィードを取得する」で粗方のRSSの取得ができたのですが、
このBlogを含む[CDATA]がある場合、無視されて取得できていませんでした。
のでsimplexml_load_fileにLIBXML_NOCDATAをくっつけて実行することで
取得出来るようです。
$feed = simplexml_load_file("http://kidokorock.com/feed",'SimpleXMLElement',LIBXML_NOCDATA);
foreach ($feed->channel->item as $item) {
//タイトルを表示
echo $item->title;
//リンクを表示
echo $item->link;
//時刻
echo $item->pubDate;
//本文
echo $item->description;
}
さて、PHP5になってとっても便利になったSimpleXMLを使ってみようと思います。
XMLということでRSSを取得するスクリプトを覚え書き
ポイントはRSSで使用されているdc:dateをNamespaces(名前空間)で
取得しなければならない
↓のdc:dateの部分
<dc:date>2009-03-02T15:00:00 +0900</dc:date>
ので下記を参考にさせていただきました。
Stuart Herbert’s PHP Blog
限りなく簡単に書いたコードは以下
$feed = simplexml_load_file("RSSへのパス");
foreach ($feed->item as $item) {
//タイトルを表示
echo $item->title;
//リンクを表示
echo $item->link;
//時刻
$dc = $item->children('http://purl.org/dc/elements/1.1/');
echo $dc->date;
//本文
echo $item->description;
}
これだと[CDATA]が扱えないので
改良版はのちほど。。
続き→
SimpleXMLでCDATAを扱う
今日は凄く細かい事で苦戦したので、覚え書きです。
windowsのExcelで書き出したCSVをWEB用に加工してたのですが、
どうも、機種依存文字#9312;(①)とか#x2160;(Ⅰ)とかがどうしても文字化ける。。
ということで
通常そういう場合には、
$hoge = mb_convert_encoding($hoge , "EUC-JP", "SJIS");
$hoge =str_replace("Ⅰ","Ⅰ",$hoge);
とかになるとおもうのですが、これだと何故か機種依存文字が無視されています。
ので
//sjis-winからいったんUTF-8に
$hoge=mb_convert_encoding($hoge , "UTF-8", "sjis-win");
//機種依存文字を変換
$hoge =str_replace("Ⅰ","Ⅰ",$hoge);
//機種依存文字を変換
$hoge = mb_convert_encoding($hoge , "EUC-JP", "UTF-8");
で無事完了しました!
cronとかで気軽にファイルのファイルのバックアップがしたいとおもい、
最小限のスクリプトでバックアップをおこなうスクリプトです。
$targetに元のファイルを入れる
$newtargetにバックアップ後のファイル名を指定。
(例ではtargetがnewtarget20090909.txtみたいな感じでバックアップに日付を入れられます。)
あとはこれをcronなどで定期的に処理すればOK!
<?php
$target = 'target.txt';
$newtarget = 'new_target'.date("YmdHi").'.txt';
if (!copy($target, $newtarget)) {
echo "コピーできませんでした。\n";
}
?>