str_getcsv函数escape参数无效问题
问题展示
- csv文件中的问题行
- str_getcsv($data, ‘,’, ‘"’)结果
处理方法
一、字符串切割
该问题没发现修改方法,查了许多,发现是双引号位置的问题,但如果要自己修改双引号位置的话就违背了这个参数的意义,于是自写函数,功能等效于str_getcsv函数
<?php
/**
* @param string $input
* @param string $delimiter
* @param string $enclosure
* @param string $escape
* @return array
* @author TXX
* @date 2021/1/25 15:03
*/
function my_str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\') {
$output = array();
if (empty($input) || !is_string($input)) {
return $output;
}
if (preg_match("/". $escape . $enclosure ."/", $input)) {
while ($strlen = strlen($input)) {
$pos_delimiter = strpos($input, $delimiter); //分隔符出现位置
$pos_enclosure_start = strpos($input, $enclosure); //封闭符-开始出现位置
//有封闭符并封闭符在分隔符之前
if (is_int($pos_delimiter) && is_int(