PHP-无法从字符串中删除空白
我有一段代码,从CSV文件中读取值,所有这些都是有效的,然后每个单独的记录都被验证,并在对外部源的API调用中使用,所有这些都是有效的 今天我上传了一个CSV文件,当我打开它时,它看起来在CSV中每个条目的末尾有3个空格,这导致API调用失败 我尝试过使用PHP-无法从字符串中删除空白,php,csv,whitespace,Php,Csv,Whitespace,我有一段代码,从CSV文件中读取值,所有这些都是有效的,然后每个单独的记录都被验证,并在对外部源的API调用中使用,所有这些都是有效的 今天我上传了一个CSV文件,当我打开它时,它看起来在CSV中每个条目的末尾有3个空格,这导致API调用失败 我尝试过使用trim()但它没有任何作用,我也尝试过使用preg_replace('/^((?=^)(\s*))|((\s*)(?>$)/si','$pValue),这也没有任何影响 我在Notepad++中打开了CSV文件,并使其能够显示所有符号,明显有
trim()
但它没有任何作用,我也尝试过使用preg_replace('/^((?=^)(\s*))|((\s*)(?>$)/si','$pValue)
,这也没有任何影响
我在Notepad++中打开了CSV文件,并使其能够显示所有符号,明显有3个空格和CR
和LF
以前有没有人遇到过这样的问题,下面是代码片段和代码板上的一个示例
编辑:
例如:
代码片段,如果需要更多,请告诉我
$vCSVData = self::getCSVData($vPendingFilePath);
foreach ($vCSVData AS $vKey => $vValue)
{
echo self::getNubmer($vValue);
...
}
getCSVData():
CSV文件片段:
Blue Table
Green Chair
Temp. Table
事实证明,我认为空白实际上是ASCII 194个字符(多亏了MikeB)来解决这个问题,因为trim、rtrim、preg_替换、str_替换为正常的
“
(空白)检查不起作用,下面的代码片段对我来说是有效的
preg_replace("/[\xA0\xC2]/", "", "Table ")
xA0是字符160,xC2是字符194
此外,在本例中,您可以使用以下语句使用trim,使用trim over preg_replace在处理时间上稍微快一点,也就是说,每种情况下的开销和差异都可以忽略不计,在我的情况下,这两种方法都足够了
trim("Table ", "\xA0\xC2")
例如:
通过使用以下代码片段,我能够找到“空间”是什么:
var_dump(ord($vString{5}));
“我尝试过使用trim(),但它没有任何作用”-听起来你的代码有问题。我们必须能够重现这个问题。发布CSV的一个小样本将使这一点更容易做到。您的代码也可能会显示明显的问题(可能您正试图
修剪CSV文件中的整行内容)。有时,空格不是空格,而是制表符或许多其他字符中的一个。您之所以这样做,是因为您正在解析CSV?!使用正确的函数。有效的CSV可以具有跨多行的同一行-您当前的方法无法处理该行。@Atalon如果您使用了trim,但它不起作用,则说明您没有正确使用它,或者这些不是空格。抛开这个问题中关于CSV、API、上传等的所有内容,给我们一个铜板:提供一个带填充的字符串,以及trim如何不使用它。@derp,感谢大家的提醒,我更喜欢使用trim而不是preg_replace,因为trim的开销更小,即使在这两种情况下开销都非常小。
var_dump(ord($vString{5}));