PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

先看图,后有完整代码 

 PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)_第1张图片

"上传失败:") exit("提交内容由Excel复制过来:应当包含:".$uptis);
file_put_contents($datedir.$files.".csv", $base);

$file = fopen($datedir.$files.".csv", 'r');
$header = fgetcsv($file, 0, "\t");
 $nozd  = count($header); $jj=0;
$max_lengths = array_fill(0, $nozd, 0); //字段最长
$lengths = []; //字段长度
$strlist = []; //字段集合
$lies = []; //字段集合
$num_str = array_fill(0, $nozd, "是"); //是否全数字
$is_null = array_fill(0, $nozd, "No"); //是否空值
$is_user = array_fill(0, $nozd, "");
$is_name = array_fill(0, $nozd, "");
while (($line = fgetcsv($file,0,"\t")) !== false) {
  $jj ++; if(count($line)<>$nozd) $lies[] = $jj;
  foreach ($line as $i => $value) {
    $strlist[$i][] = $value;
    $lenx = strlen($value);
    $lengths[$i][] = strlen($value);
    if( Trim($value)=="" ) $is_null[$i] = "";
    if( !is_numeric($value) ) $num_str[$i] = "否";
    if( !isuser($value) ) $is_user[$i] = "否";
    if( !isname($value) ) $is_name[$i] = "否";
    $max_lengths[$i] = max($max_lengths[$i], strlen($value));
  }
}
fclose($file);
echo "

分析结果:机器识别,仅供参考

\r\n"; echo "\r\n"; echo "\r\n"; for($ii=0;$ii<$nozd;$ii++){ $line = []; $uni = array_count_values($strlist[$ii]); $una = array_keys($uni); $unb = join(";",$una); $lilen = array_unique($lengths[$ii]); $listl = join(",",$lilen); $line["字段"] = $header[$ii]; $line["最长长度"] = $max_lengths[$ii]; $line["字段长度有"] = $listl; $line["字段属性"] = $num_str[$ii]; $line["空值存在"] = $is_null[$ii]; $line["汉字名字"] = $is_name[$ii]; $line["用户名"] = $is_user[$ii]; preg_match_all("/[+-]?[\d]+([\.][\d]+)?[Ee][+-]?[\d]+/", $unb, $match); $kes = count($match[0]); if($kes>0){ $line["科学计数"] = "异常$kes处";}else{ $line["科学计数"] = "正常";} if(count($lilen)==1) $line["是否等长"] = "是"; else $line["是否等长"] = "否"; $isc = array_diff($uni, [1]); if(count($isc)<1) $line["是否唯一"] = "是"; else $line["是否唯一"] = "否"; echo "\r\n"; } echo "
".join("",$xx)."
".join("",$line)."
\r\n"; echo "

请核对:核对数据:{$jj}行{$nozd}列

\r\n"; if(count($lies)>0) echo "

有".count($lies)."行(行:".join(",",$lies).")列数与标题列数({$nozd})不一致

\r\n"; foreach($tt as $ti=>$tv){ echo "

$ti: $tv

";} exit(); } ?> <?php echo $t; ?>

仅供娱乐!

你可能感兴趣的:(php,mysql,php,sql)