在php中单独读取字符串的元素

时间:2014-07-10 15:27:06

标签: php csv

我正在尝试将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并且没有任何效果.. 我真的很感激一些帮助!

2 个答案:

答案 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);

相同的值...您的结果数组将在键...

仍然不明白为什么你使用两个单独的套装,但它可能是你的要求