ブログのエクスポートファイルを、連想配列に取り込むスクリプト書ける方、いらっしゃいますか?
【要望】
↓このファイルを読み込んで、配列$arrayに取り込みたいのです。
http://www.geocities.jp/rstreaming/723.html
$array[$date][extended_body]か
$array[$i][extended_body]のような形で値を取り出せればOK。
PHP: Hypertext Preprocessor
パズル感覚で書きました!
以下のスクリプトと同じフォルダに、example.txtというファイルがあると仮定して作っています。
内部エンコーディングと、テキストファイルの文字コードが異なる場合は、適宜mb_convert_encodingで変換してください。うちの動作環境はphp4.3.10、内部エンコーディングeuc_jp、テキストの文字コードもeuc_jpで動作確認しています。
<?php
$head_list = array(
’author’,
’title’,
’status’,
’allow comments’,
’convert breaks’,
’allow pings’,
’primary category’,
’date’,
);
$array = array();
$file = mb_ereg_replace(”(¥r¥n|¥r)”, ”¥n”, file_get_contents(’example.txt’)); //改行コード統一
$entrys = explode(”¥n--------¥n”, $file); //エントリごとに分割
foreach($entrys as $entry){
if(trim($entry)){ //空でなければ
$data = array();
list($head, $body, $extended_body, $excerpt, $keywords) = explode(”¥n-----¥n”, $entry); //-----で分割
$head = ”¥n”.$head.”¥n”; //処理しやすいように細工
foreach($head_list as $head_item){
if(mb_eregi(”{$head_item}: ([^¥n]+)¥n”, $head, $match)){
$data[str_replace(’ ’, ’_’, $head_item)] = $match[1];
}
}
if(mb_ereg(”^BODY:¥n(.*)$”, $body, $match)){
$data[’body’] = $match[1];
}
if(mb_ereg(”^EXTENDED BODY:¥n(.*)$”, $extended_body, $match)){
$data[’extended_body’] = $match[1];
}
if(mb_ereg(”^EXCERPT:¥n(.*)$”, $excerpt, $match)){
$data[’excerpt’] = $match[1];
}
if(mb_ereg(”^KEYWORDS:¥n(.*)$”, $keywords, $match)){
$data[’keywords’] = $match[1];
}
$array[$data[’date’]] = $data;
}
}
//表示して確認してね
echo ’<pre>’;
print_r($array);
echo ’</pre>’;
?>
ばっちり入りました。
お見事でした!
ありがとうございました。