ホームページ  >  記事  >  バックエンド開発  >  PHP は行と長さによって txt データを読み取り、mysql に保存します

PHP は行と長さによって txt データを読み取り、mysql に保存します

WBOY
WBOYオリジナル
2016-06-23 14:15:411026ブラウズ

58131 2012   041181603358---------------  278    4---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------V1.000021 6773 6760 7201 7266 7162 7393 7427 7574 7440 7303 7321 7440 6927 7233 7219 7504 7555 7458 7518 7833 7852 7652 7040 6672 6699 5926 5717 5738 6073 6056 6325 6352 6965 7062 7094 7278 7465 7292 7324 7475 7562 7546 7314 7821 7869 7814 8178 8020 8300 7930 8608 8833 8643 8910 8927 8857 8976 8798 9535 90090022 9028 9818 9304 9042 8616 9044 9664 9966 970810022 962010491 9878 955810206100981000010564 99021020910279 8850 9246 9647 9310 8204 7860 8477 8313 8029 6600 6945 6503 6377 6212 5610 5732 5321 5302 5530 5973 5057 4293 4014 4826 5012 4955 4643 5218 5708 5861 6365 6756 6637 6534 8180 6732 6103 7344 7051


上記はtxt形式ファイルのデータ内容です、ファイル名は「V5813101.012」です
形式は次のとおりです: 1行目、データファイルの説明は次のとおりです
シリアル番号パラメータ 数値 ロングリザーブ注
1. ファイル番号 5 バイト
2. 年の 5 バイトは 5 バイト未満で、その前にスペースが続きます
3. 月 5 バイト
4. 長さ 5 バイト。
5. 幅 5 バイト
6. 予備フィールド 15 バイト 各バイトに「-」(マイナス記号)を事前に入力します。
7. 高さ: 5 バイト。上位ビットが足りない場合は、先頭にスペースを追加します。
8. 5 バイトを識別し、「4」で埋めます。
9. 残りの予約バイトはそれぞれ「-」 (マイナス記号) で埋められ、パラメーター行と後続のデータレコード行が同じ長さになります。
10. V1.00 4バイト
11. 復帰と改行 2バイト

2行目から開始
ファイルの2行目から分データ記録行、1時間ごとに1レコード行、各行が記録されています。長さは等しく、レコード長は 60×5+6 です。順序は、「日付」2桁、「時」2桁、60分×5+「復帰・改行」2桁です。

1 か月はファイルです。データを読み取ってデータベースに書き込む簡単な方法はありますか?
満点です。


ディスカッションへの返信(解決策)

$fn = 'V5813101.012';$ar = file($fn, FILE_IGNORE_NEW_LINES | FILE_IGNORE_NEW_LINES);//处理首行$h = sscanf(str_replace(' ', '_', $ar[0]), "%5s%5s%5s%5s%5s%15s%5s%5s%249s%5s");array_walk($h, function(&$v, $k, $t) { $v = strtr($v, $t); }, array('_' => ' '));print_r($h);//处理剩余行for($i=1; $i<count($ar); $i++) {  $t = str_split(' '.$ar[$i], 5);  $p = str_split(trim(array_shift($t)), 2);  $t = array_merge($p, $t);  print_r($t);}

あなたは素晴らしいとしか言​​えません! !
しかし、まだ問題があります
7 行目でエラーが報告されます
解析エラー: 7 行目の read.php に構文エラー、予期しない T_FUNCTION があります
この行をコメントアウトすると出力されます。

$fn = 'V5813101.012';$ar = file($fn, FILE_IGNORE_NEW_LINES | FILE_IGNORE_NEW_LINES);//处理首行$h = sscanf(str_replace(' ', '_', $ar[0]), "%5s%5s%5s%5s%5s%15s%5s%5s%249s%5s");array_walk($h, function(&$v, $k, $t) { $v = strtr($v, $t); }, array('_' => ' '));print_r($h);//处理剩余行for($i=1; $i<count($ar); $i++) {  $t = str_split(' '.$ar[$i], 5);  $p = str_split(trim(array_shift($t)), 2);  $t = array_merge($p, $t);  print_r($t);}

は 6 行目です

あなたは素晴らしいとしか言​​えません! !
しかし、まだ問題があります
7 行目でエラーが報告されます
解析エラー: 7 行目の read.php に構文エラー、予期しない T_FUNCTION があります
この行をコメントアウトすると出力されます。


すごい

まだ php5.3 を使ったことがないですか?
別のコールバック関数を書くことができます

$fn = 'V5813101.012';$ar = file($fn, FILE_IGNORE_NEW_LINES | FILE_IGNORE_NEW_LINES);//处理首行$h = sscanf(str_replace(' ', '_', $ar[0]), "%5s%5s%5s%5s%5s%15s%5s%5s%249s%5s");array_walk($h, function(&$v, $k, $t) { $v = strtr($v, $t); }, array('_' => ' '));print_r($h);//处理剩余行for($i=1; $i<count($ar); $i++) {  $t = str_split(' '.$ar[$i], 5);  $p = str_split(trim(array_shift($t)), 2);  $t = array_merge($p, $t);  print_r($t);}


このコールバックの目的は、「_」に変更されたスペースを元に戻すことです

わかりました、バージョンの問題のはずです、ありがとう!

php5.3をまだ使用したことがありませんか?
別のコールバック関数を書くことができます

array_walk($h, 'foo', array('_' => ' '));function foo(&$v, $k, $t) { $v = strtr($v, $t); }


このコールバックの目的は、"_" に変更されたスペースを元に戻すことです

まだ php5.3 を使用したことがありませんか?
別のコールバック関数を書くことができます
array_walk($h, 'foo', array('_' => ' '));function foo(&$v, $k, $t) { $v = strtr($v, $t); }


このコールバックの目的は、「_」に変更されたスペースを元に戻すことです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。