【ブログ.txt => $array PHP】(500pt)

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:ito-yu No.1

回答回数323ベストアンサー獲得回数14

ポイント500pt

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


?>

id:radio3

ばっちり入りました。

お見事でした!

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

2005/07/23 13:48:48

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません