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

PHPの正規表現?&配列?の質問です。
下記のようなtest.txtがあります。

text.txtの内容

日時:2007年12月10日
名称:なんでも屋さん
住所:まるまる区
URL :http://www.nandemoyasan.com

そのtxtファイルを読み込んで配列に収めたいのです。
下記のようなコード(滅茶苦茶ですが)を書いてみたのですが、
うまく表示されません。。

<?
$fp = @fopen(./text.txt);
if($data){
list
list($day) = split("日時:", $date);
echo "日時は".$day."です。";
else{
echo "ファイルが存在しません。";
}
?>

希望している出力は下記の通りです。
--
日時は2007年12月10日です。
--
誰か教えてください。

●質問者: nzk
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:12月10日 2007年 ECHO FP PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tezcello
●35ポイント

「配列に...」という事でしたので、一旦全てを配列に読み込んでみました。

$lines = file('test.txt');
if ($lines !== FALSE){
foreach($lines as $line){
list($key, $val) = split(':', $line);
$ary[trim($key)] = trim($val);
}
print '日時は'.$ary['日時'].'です。';
}else{
print "ファイルを開けませんでした";

ただし、

test.txt の文字コードはUTF-8(BOM無し)(多分EUCでも可)

PHPの言語、内部エンコードなどもそれに合わせる

をしておかないとダメかも。


ただ単に日時(あるいは別な項目)を抜き出したいだけなら、

$line = file_get_contents('test.txt');

if ($line !== FALSE){
if (preg_match('/日時:(.*)/', $line, $res)){
print '日時は'.$res[1].'です。';
}else{
print '日時の項目はありませんでした';
}
}else{
print "ファイルを開けませんでした";
}

こんな感じでしょうか。

http://jp2.php.net/manual/ja/function.preg-match.php

◎質問者からの返答

理想どおりです!

ありがとうございます!

日時:2007年12月10日

名称:なんでも屋さん

住所:まるまる区

URL :http://www.nandemoyasan.com

本文:なんでも屋さんをはじめました!!

いつでもあそびにきてください!!

なんでもやりますよ?!!

そのような場合は"本文:"の部分が"なんでも屋さんをはじめました!!"しか表示されないんですね。

以降の文章を表示するためにはどうすればいいでしょうか?

よろしくお願いします。


2 ● しろっくす
●35ポイント

こんなんどうですか?読み込むだけならfile_get_contentsを使うと楽ですよ。

$f = file_get_contents("./text.txt");

$l = explode("\n",$f);

foreach($l as $val){

if(is_numeric(strpos("日時:",$val))){

$r = explode(":",$val);

$day = $r[1];

}

}

echo "日時は".$day."です";

?>

http://google.com

関連質問


●質問をもっと探す●



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