我正在尝试将csv文件导入到数据库中,但是在阅读文件时,我仍然无法单独获取返回的字符串元素。
我读了这样的csv文件:
if(!file_exists($fileURL) || !is_readable($fileURL)){
return FALSE;
}
$header = null;
$data = array();
if (($handle = fopen($fileURL, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if($header === null){
$header = $row;
}
else{
$data[] = array_combine($header, $row);
}
}
fclose($handle);
}
return $data;
然后返回一个这样的数组:
array(1) { ["codeA codeB codeC codeD codeE codeF codeG codeH codeI codeJ codeK codeL codeM codeN codeO codeP codeQ codeR codeS codeT codeU"]=> string(293) "6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338 6928549666338" }
当我尝试将值分开时,它不会发生,我不明白为什么!
我试着将它们分开:
$separatedArray = array();
$keys = array_keys($arrayToSeparate);
$separatedKeys = explode(" ",$keys[0]);
$values = array_values($arrayToSeparate);
$separatedValues = explode(" ",$values[0]);
foreach($separatedKeys as $i)
{
$key = $separatedKeys[$i];
$separatedArray[$key] = $separatedValues[$i];
}
return $separatedArray;
我已尝试使用str_getcsv,str_replace并且没有任何效果.. 我真的很感激一些帮助!
答案 0 :(得分:0)
改变这个:
$separatedKeys = explode(" ",$keys[0]);
到此:
$separatedKeys = explode(" ",preg_replace("@[\s]+@i", ' ', $keys[0]));
对values数组执行相同操作。不知道为什么你有2个......因为他们都做同样的事情。
<强>更新强>
$separatedArray = explode(" ",preg_replace("@[\s]+@i", ' ', $arrayToSeparate[0]));
return $separatedArray;
更新2(通过使用/更改您的代码):
$separatedArray = array();
$separatedValues = explode(" ", preg_replace("@[\s]+@i", ' ', $arrayToSeparate[0]));
for ($i = 0; $i < count($separatedValues); $i++) {
$separatedArray[$i] = $separatedValues[$i];
}
return $separatedArray;
答案 1 :(得分:0)
在\ w +
上尝试preg_match_all即preg_match_all(&#39; / \ w + /&#39;,$ keys [0],$ keys);
相同的值...您的结果数组将在键...
仍然不明白为什么你使用两个单独的套装,但它可能是你的要求