【发布时间】:2012-02-15 01:29:23
【问题描述】:
我真的很生气,希望你能帮我解决一个问题。
风景。
一个 php 文件读取文本文件中的一些数据并填充一个 mysql 数据库。 为此,我使用了“sscanf”函数,一切运行良好……但并非总是如此! 由于部分文本数据文件格式略有差异,导致数据库中的字段填写错误。
这是一个例子:
这是数据文件.txt的通用行:
...
<name:4>John <country:3>USA <age:2>20
...
要读取文件中的数据并填充 MyQSL 数据库,我使用函数 sscanf 后跟特定参数,如下例所示:
$values = sscanf ($s, "<name:%d>%s ", $length,$personal_data['name']);
$values = sscanf ($s, "<country:%d>%s ", $length,$personal_data['country']);
$values = sscanf ($s, "<age:%d>%s ", $length,$personal_data['age']);
这些参数没问题,MyQSL 数据库填充正确;每个字段都有它的数据。姓名 -> “约翰” - 国家 -> “美国” - 年龄“20”
不幸的是,包含我的数据的文本文件有点不同,即使使用相同的格式。 这是另一个例子:
<name:4>John<country:3>USA<age:2>20
在这种情况下,之前使用的具有相同参数的 sscanf 函数会出错。数据库中的所有字段都有错误的数据。这是因为源文件 (.txt) 中每个字段的末尾没有空格 数据库将以这种方式填充 NAME -> "John "ry:3>USA" - AGE"
所以我必须修改sscanf参数如下:
$values = sscanf ($s, "<name:%d>%s<", $length,$personal_data['name']);
$values = sscanf ($s, "<country:%d>%s<", $length,$personal_data['country']);
$values = sscanf ($s, "<age:%d>%s<", $length,$personal_data['age']);
一切又好了。
问题是空白。在某些 .txt 文件中存在于每个字段之后,而在其他文件中则没有。您可以注意到 %s 参数后的差异(在一种情况下是空格,在另一种情况下是
我该如何解决这个问题?有没有办法告诉 sscanf 在文本源文件中每个字段都以空格或
提前致谢,马修
【问题讨论】: