人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【ブログ.txt => $array PHP】(500pt)
ブログのエクスポートファイルを、連想配列に取り込むスクリプト書ける方、いらっしゃいますか?
【要望】
↓このファイルを読み込んで、配列$arrayに取り込みたいのです。
http://www.geocities.jp/rstreaming/723.html
$array[$date][extended_body]か
$array[$i][extended_body]のような形で値を取り出せればOK。


●質問者: radio3
●カテゴリ:コンピュータ
✍キーワード:PHP txt エクスポート スクリプト ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ito-yu
●500ポイント

http://php.net/

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>’;


?>

◎質問者からの返答

ばっちり入りました。

お見事でした!

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ