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

时间:2014-08-26 20:40:47

标签: 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);
     ...
}

getCSVData():

private function getCSVData($pFilePath)
{
    return call_user_func_array('array_merge', array_map('str_getcsv', file($pFilePath, FILE_SKIP_EMPTY_LINES)));
}

CSV文件摘要:

Blue Table   
Green Chair  
Temp. Table   

1 个答案:

答案 0 :(得分:4)

事实证明,我认为白色空间实际上是ASCII 194个字符(感谢MikeB)用于解决这个问题,作为trim,rtrim,preg_replace,str_replace与正常" "(空白空间)检查没有工作,下面的代码片段对我有用。

preg_replace("/[\xA0\xC2]/", "", "Table   ")

xA0是char 160,xC2是char 194。

你也可以在这个例子中使用trim来使用下面的语句,使用trim over preg_replace对处理时间稍微快一点,用表示每种情况下的开销和差别可以忽略不计,在我的情况下要么就足够了。 / p>

trim("Table   ", "\xA0\xC2")

示例:http://codepad.org/8H5Ut2KA

我可以使用下面的代码片段找出“空间”的内容:

var_dump(ord($vString{5}));