1

形式のテキストファイルを読んでいます

電話番号(タブ)テキスト(改行) (改行)

またはより具体的に

4799999999  Hey! You owe us $576.53. Pay up to account no. 9760.00.12345, ID: 201561438.

4798888888  Hey! You owe us $199. Pay up to account no. 9760.05.12345, KID: 201565173.

4797777777  Hey! You owe us... and so on.

これを SQL データベースに保存したいので、電話番号とテキストに分割する必要があります。

PHP で文字列をペアに分割する方法についてのアイデアはありますか? SQL に保存する前にこれらの値を配列に保存する必要がありますか、それともすぐに保存する必要がありますか?

4

6 に答える 6

6

ファイルを 1 行ずつ読み取り、タブ car で各行を分割してから、DB プラットフォームに適した SQL を使用して DB に配置します。

どの部分に問題がありますか?

于 2009-12-09T14:25:34.703 に答える
4
$data = file_get_contents ($file); // Assuming $file holds path to file
if ($data) {
    $lines = explode("\n\n", $data);
    foreach ($lines as $line) {
        list ($phone, $message) = explode("\t", $line, 2);
        // do whatever you need with it
    }
}
于 2009-12-09T14:28:55.233 に答える
3

各行にexplodeタブ ( ) 区切り文字を指定して関数を使用します。\t

于 2009-12-09T14:26:44.020 に答える
1

正規表現を使用して文字列を分割し、SQL を使用してデータベースに入力できます。

^([0-9]{10})(.*)

電話番号を最初のキャプチャ グループとして戻し、残りのテキストを 2 番目のキャプチャ グループとして戻します。

于 2009-12-09T14:26:29.400 に答える
1

ファイルが大きくないと仮定すると、行を配列に読み込んで、次のfile()ように繰り返すことができます。

$lines = file($filename);

foreach($lines as $line) {
  $line_arr = explode("\t", $line, 2);

  if(!empty($line_arr)) {
    // $line_arr[0] will be the phone number and
    // $line_arr[1] will be the text; insert them into your database
    // however you please.
  }
}
于 2009-12-09T14:31:33.793 に答える
1

strposテキスト部分にタブがある場合は、関数を使用した方が良いと思います。

$lines = file( $filename );

foreach ( $lines as $line )
{
    $tab = strpos( $line, "\t" );
    $num = substr( $line, 0, $tab );
    $text = substr( $line, $tab );
}

ファイルが特に大きい場合は、file関数 andforeachfopenandに置き換えますfgets(例を参照)。

于 2009-12-09T14:41:46.140 に答える