我有以下功能。在PI-Detail-ASXX.txt文件中,数据的分隔符为“〜”。我正在使用以下功能来爆炸符号,但它也会删除“,”。
function checkFeatures($productID,$count)
{
$fd = fopen('PI-Detail-ASXX.txt', 'r');
$fline = 0;
while ( ( $frow = fgetcsv($fd) ) !== false ) {
if ($fline <=0 ) {
// headings, so continue/ignore this iteration:
$fline++;
continue;
}
//for lines other than headers
if($fline >0){
$contents = explode("~", $frow[0]);
print_r($contents);
$fline++;
}
}
}
例如,如果您在txt文件中有此数据。我的函数跳过第一个标题行,读取第二行但是将数组切换为 deploy,,并且因为我相信逗号而只打印3个数组元素。第三行使用5个数组元素正确打印。有谁知道如何不让这种情况发生。
IMSKU~AttributeID~Value~Unit~StoredValue~StoredUnit
1000001~7332~McAfee Host Intrusion Prevention for Desktops safeguards your business against complex security threats that may otherwise be unintentionally introduced or allowed by desktops and laptops. Host Intrusion Prevention for Desktops is easy to deploy, configure, and manage.~~~
1000001~7343~May 2013~~~
1000001~7344~McAfee~~0.00~
答案 0 :(得分:2)
您正在使用fgetcsv()
读取文件,该文件默认使用逗号。此后,您将在~
上爆炸。你可以向fgetcsv()
添加一个额外的参数,它会在~
上直接打破一个数组,然后不需要爆炸字符串。
这应该会给你一个想法,但我还没有对它进行测试。
function checkFeatures($productID,$count)
{
$fd = fopen('PI-Detail-ASXX.txt', 'r');
$fheader = fgets($fd); // read and discard header first
while ( ( $frow = fgetcsv($fd,0,'~') ) !== false ) {
print_r($frow);
}
fclose($fd);
}