我正在阅读格式为
的文本文件手机号码(标签)文字(换行符) (换行)
或更具体地说
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之前将这些值存储在数组中,还是应该立即存储它?
答案 0 :(得分:6)
逐行读取文件,拆分选项卡车上的每一行,然后使用适合您的数据库平台的SQL将其放入数据库中。
你遇到了哪些问题?
答案 1 :(得分: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
}
}
答案 2 :(得分:3)
使用explode
函数,每行包含一个制表符(\t
)分隔符。
答案 3 :(得分:1)
您可以使用正则表达式来分解字符串,然后使用SQL将它们输入到数据库中。
^([0-9]{10})(.*)
会将电话号码作为第一个捕获的组返回,将剩余的文本作为第二个捕获组返回。
答案 4 :(得分: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.
}
}
答案 5 :(得分:1)
我认为你最好使用strpos
功能,以防文本部分中有标签。
$lines = file( $filename );
foreach ( $lines as $line )
{
$tab = strpos( $line, "\t" );
$num = substr( $line, 0, $tab );
$text = substr( $line, $tab );
}
如果文件特别大,请将file
功能和foreach
替换为fopen
和fgets
(see example)。