質問させて頂きます。
下記のようなデータがテキストであったとして、「name」「ID」の行だけ取り出し、
CSV、もしくはテキストなどでも良いので出力する方法はないでしょうか。
言語はPHPだと助かります。
-----------------------
name tanaka
blood B
birthday 10/24
ID 1002324
time 14:15
-----------------------
name hashimoto
blood O
birthday 6/11
ID 1002325
time 14:50
-----------------------
name yamaguti
blood AB
birthday 1/3
ID 1002326
time 18:29
-----------------------
×500くらい
出力結果(例)
name tanaka
ID 1002324
name hashimoto
ID 1002325
name yamaguti
ID 1002326
または
name tanaka,ID 1002324
name hashimoto,ID 1002325
name yamaguti,ID 1002326
質問内容に説明不足な部分などがありましたら申し訳ありません。
どなたかご存じの方がいらっしゃいましたら、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
そのまま書けばいいように思いますが、どのあたりがわからなかったのでしょうか?
データに「name」と「ID」は必ずあるという前提でよければ、こんな感じでしょうかね。
<?php
$fi = fopen('data.txt', 'r') or die('cannot open');
$fo = fopen('result.txt', 'w') or die('cannot open');
$ct = 0;
$out = array();
while (($buf = fgets($fi, 8192)) !== false) {
if (strpos($buf, 'name') === 0) {
if (count($out) !== 0) {
$ct++;
fputs($fo, implode(',', $out) . PHP_EOL);
}
$out = array();
$out[] = trim($buf);
}
if (strpos($buf, 'ID') === 0) {
$out[] = trim($buf);
}
}
if (count($out) !== 0) {
$ct++;
fputs($fo, implode(',', $out) . PHP_EOL);
}
fclose($fi);
fclose($fo);
print '<a href="result.txt">result = ' . $ct . '</a>';
とても細かく分かりやすい解答ありがとうございます。
早速試したところ考えていた通りに処理することが出来ました!
本当にありがとうございます。
No.1
- 回答日時:
FGetS()関数をループして、1行ずつ読み込んで、
explode()関数でスペースを区切り文字に要素名と値に分けて、
配列にでも入れればいいんじゃないかなぁ。
以下適当。ファイルのオープン・クローズや、
Trim関数とかで余計なスペースを取り除けばできるのでは?
$i = 0;
$arr = new Array();
while(!FEOF($fp)){
$str = FGetS($fp);
if(EReg("-+", $str){
$i++;
continue;
}
$val = Explode(" ",$str);
$arr[$i] = Array($val[0] => $val[1]);
}
PrintR($arr);
あまりに適当なので、まともに動かなかったらすまん。
回答頂きありがとうございます。
例文が悪かったのですが、実際のデータが単純なスペース区切りというわけではなかったので今回はもうひと方の回答を参考にさせてもらいました。
ですが、こちらの回答もとても勉強になりましたので、機会があれば参考にさせて頂こうと思います!
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでショッピングカート機能を...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Fortranでのファイル名操作につ...
-
if文のなかで
-
$a = ( $b == $c ) ? $d、 この...
-
phpのカウンタのリセット方法
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで画像の渡しが上手く行きま...
-
複数行のデータ一括更新に関して
-
POSTデータのNAME属性をVALUEに...
-
PHPでPCのローカル時刻は取得出...
-
POSTの値を配列として受け取っ...
-
IEで、フォームにたとえば
-
チェックボックスを用い、MySQL...
-
PHPでURLにジャンプするには?
-
フォームの途中で追加するには
-
POSTを使わずに値を渡す方法
-
フォームで作った送信ボタンが...
-
検索時の選択内容を保持する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
ファイル名を変更してアップロ...
-
PHPからHTMLへの変数の受け...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
UPDATEできない
-
WordのIDataObject::GetData呼...
-
C# 同じ処理をまとめたい
-
POSTの項目に追加
-
イタリア人がCatherineと聞いた...
おすすめ情報