PHP - 无法从字符串中删除空格

lla*_*ato 2 php csv whitespace

我有一段代码从 CSV 文件中读取值,所有工作正常,然后每个单独的记录都经过验证并用于对外部源的 API 调用,所有这些都正常工作。

现在我上传了一个 CSV 文件,当我打开它时,它看起来在 CSV 中每个条目的末尾都有 3 个空格,这会导致 API 调用失败。

我试过使用,trim()但它没有做任何事情,我也试过使用preg_replace('/^((?=^)(\s*))|((\s*)(?>$))/si', '', $pValue),这也没有任何影响。

我在 Notepad++ 中打开了 CSV 文件并启用它以显示所有符号,显然有 3 个空格CRLF.

以前有没有人遇到过这样的问题,下面的代码片段和键盘上的示例。

编辑:

示例: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)

lla*_*ato 8

事实证明,我认为的空白实际上是 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)