Php CSV中的字符串添加了隐藏字符,因此在比较时,结果始终为false

Php CSV中的字符串添加了隐藏字符,因此在比较时,结果始终为false,php,string,csv,comparison,Php,String,Csv,Comparison,我从CSV中提取数据并与之进行比较 private function isCsvValid($fileLocation){ $file = fopen($fileLocation, 'r'); $line1 = fgetcsv($file); $isValid = $this->checkCorrectColumns($line1); } private function checkCorrectColumns($line){ $columnsFound

我从CSV中提取数据并与之进行比较

private function isCsvValid($fileLocation){
    $file = fopen($fileLocation, 'r');
    $line1 = fgetcsv($file);
    $isValid = $this->checkCorrectColumns($line1);
}


private function checkCorrectColumns($line){
    $columnsFound = array();

    foreach ($line as $value) {
       //comparisons here
       if($value == "GBPAUD"){

       }
    }

}
但是,CSV字符串中有隐藏字符

    array(6) {
      [0]=> string(19) "363533840"
      [1]=> string(15) "GBPAUD"
      [2]=> string(47) "2007-12-02 17:00:33.000"
      [3]=> string(17) "2.326500"
      [4]=> string(17) "2.327400"
      [5]=> " string(5) "D
    }
其中,作为我的字符串,必须更正字符数

string(6) "GBPAUD"
我可以用这个正则表达式比较返回真值,它除去了字母和数字以外的所有东西,这很好

/[^A-Za-z0-9]/
但这将删除浮动和入市日期等中的

每一位数据都有额外的字符。我宁愿不必为每个字符串都有一个片段尾正则表达式

有人能告诉我如何使字符串的位数正确吗?Iv在互联网上搜索,但没有一条建议有效(如二进制安全比较、剥离html内容等)


还有什么方法可以删除所有字符串上的所有隐藏字符吗?

我用这个正则表达式找到了解决方案

$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $value);

我用这个正则表达式找到了解决方案

$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $value);

将您的打印($value)放在文本区域内,您的浏览器将不会“解释”内容,这可能会让您有所了解,看一眼原始CSV行也会有所了解。如果查看原始CSV意味着使用head-1打开文件(或使用nano或vim或其他方式打开),这是第一行363533823,GBP/AUD,2007-12-02 17:00:24.000,2.326400,2.327300,我认为这可能是一个格式问题,所以我尝试将字符串转换为utf-8,但仍然没有cigarI找到答案$string=preg_replace('/[\x00-\x1F\x80-\xFF]/','','',$value);不要在问题的底部添加答案,你应该将其作为问题的实际答案添加,并选择该答案作为接受答案(你可能需要等待24小时才能接受自己的答案)。这会将此问题标记为已回答,并将其从未回答的问题列表中删除。将您的打印($value)放在文本区域内,您的浏览器不会“解释”内容,这可能会让您有所了解,查看原始CSV行也会有所了解。如果查看原始CSV,您的意思是使用head-1打开文件(或者以nano或vim之类的语言开头),这是第一行363533823,GBP/AUD,2007-12-02 17:00:24.000,2.326400,2.327300,我认为这可能是格式问题,所以我尝试将字符串转换为utf-8,但仍然没有找到答案$string=preg_replace('/[\x00-\x1F\x80-\xFF]/','','$value);不应在问题底部添加答案,而应将其作为问题的实际答案添加,并选择该答案作为接受答案(您可能需要等待24小时才能接受自己的答案)。这会将此问题标记为已回答,并将其从未回答问题列表中删除。谢谢。只是想知道您是如何找到解决方案的。谢谢。只是想知道您是如何找到解决方案的。