1

我正在阅读格式的文本文件

Phone#(tab)Text(换行)(换行)

或者更具体地说

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

逐行读取文件,在标签车上拆分每一行,然后使用适合您数据库平台的 SQL 将其放入数据库。

你在哪个部分有问题?

于 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

Use the explode function with a tab (\t) delimiter on each line.

于 2009-12-09T14:26:44.020 回答
1

Assuming the file isn't huge, you can just read the lines into an array with file() and iterate over them like so:

$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

您可以使用正则表达式来分解字符串,然后使用 SQL 将它们输入到数据库中。

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

将带回电话号码作为第一个捕获的组,并将剩余的文本作为第二个捕获的组。

于 2009-12-09T14:26:29.400 回答
1

我认为您最好使用该strpos功能,以防文本部分中有标签。

$lines = file( $filename );

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

如果文件特别大,请将file函数 and替换为foreachand fopenfgets参见示例)。

于 2009-12-09T14:41:46.140 回答