Php CSV中的字符串添加了隐藏字符,因此在比较时,结果始终为false
我从CSV中提取数据并与之进行比较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
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小时才能接受自己的答案)。这会将此问题标记为已回答,并将其从未回答问题列表中删除。谢谢。只是想知道您是如何找到解决方案的。谢谢。只是想知道您是如何找到解决方案的。