lla*_*ato 2 php csv whitespace
我有一段代码从 CSV 文件中读取值,所有工作正常,然后每个单独的记录都经过验证并用于对外部源的 API 调用,所有这些都正常工作。
现在我上传了一个 CSV 文件,当我打开它时,它看起来在 CSV 中每个条目的末尾都有 3 个空格,这会导致 API 调用失败。
我试过使用,trim()但它没有做任何事情,我也试过使用preg_replace('/^((?=^)(\s*))|((\s*)(?>$))/si', '', $pValue),这也没有任何影响。
我在 Notepad++ 中打开了 CSV 文件并启用它以显示所有符号,显然有 3 个空格CR和LF.
以前有没有人遇到过这样的问题,下面的代码片段和键盘上的示例。
示例:http : //codepad.org/DfjzPcUU
代码片段,如果需要更多,请告诉我。
$vCSVData = self::getCSVData($vPendingFilePath);
foreach ($vCSVData AS $vKey => $vValue)
{
echo self::getNubmer($vValue);
...
}
Run Code Online (Sandbox Code Playgroud)
getCSVData():
private function getCSVData($pFilePath)
{
return call_user_func_array('array_merge', array_map('str_getcsv', file($pFilePath, FILE_SKIP_EMPTY_LINES)));
}
Run Code Online (Sandbox Code Playgroud)
CSV 文件片段:
Blue Table
Green Chair
Temp. Table
Run Code Online (Sandbox Code Playgroud)
事实证明,我认为的空白实际上是 ASCII 194 个字符(感谢 MikeB)来解决这个问题,因为使用正常" "(空白)检查的trim、rtrim、preg_replace、str_replace不起作用,下面的代码片段是什么对我有用。
preg_replace("/[\xA0\xC2]/", "", "Table ")
Run Code Online (Sandbox Code Playgroud)
xA0 是字符 160,xC2 是字符 194。
您也可以在这种情况下通过使用以下语句使用 trim,在处理时间上使用trim over preg_replace 稍微快一点,也就是说每种情况下的开销和差异可以忽略不计,在我的情况下就足够了。
trim("Table ", "\xA0\xC2")
Run Code Online (Sandbox Code Playgroud)
例子: http //codepad.org/8H5Ut2KA
通过使用以下代码片段,我能够找出“空间”是什么:
var_dump(ord($vString{5}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |