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

news2024/10/7 4:36:52

先看图,后有完整代码 

 

<?php
$t = "Excel数据转Sql查询系统字段半智能分析";
$s = "Excel复制过来的二维结构表内容,分析查询条件!";
$x = "字段|最大长度|长度有|数字字段|空值存在|纯姓名|英文用户名|科学计数|是否等长|是否唯一";
$xx= explode("|",$x);
function isname($str) {
    $pattern = '/^[\x{4e00}-\x{9fa5}]{2,8}$/u'; // Unicode编码范围内的汉字
    return preg_match($pattern, $str);
}
function isuser($str) {
    $pattern = '/^[a-zA-Z0-9_\-]{6,18}$/'; //
    return preg_match($pattern, $str);
}
$tt=array();
$tt["空值存在"]="查询条件列内容如果空值则查询不到";
$tt["纯汉字姓名特征"]="是(2-6汉字):适合查询条件";
$tt["英文用户名特征"]="是(6-16字母数字):适合查询条件";
$tt["科学计数"]="数值已科学计数,会影响数值精度和人眼识别;如果是查询条件则查询不到!";
$datedir = "";
if($_GET["x"] == "cha"){
$base = isset($_POST['tips']) ? $_POST['tips'] : "";
$files="S2".date("YmdHis");
$uptis = "上传失败:";
if(!stristr($base,"\t"))$uptis .= "制表符;";
if(!stristr($base,"\n"))$uptis .= "回车符;";
if($uptis<>"上传失败:") 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, "<b>是</b>");
$is_name = array_fill(0, $nozd, "<b>是</b>");
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] = "<b>是</b>";
    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 "<h3>分析结果:<strong>机器识别,仅供参考</strong></h3>\r\n";
echo "<table cellspacing=\"0\" class=\"table\" cellpadding=\"0\">\r\n";
echo "<tr class='tt'><td>".join("</td><td>",$xx)."</td></tr>\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["科学计数"] = "异常<b>$kes</b>处";}else{ $line["科学计数"] = "正常";} 
 if(count($lilen)==1) $line["是否等长"] = "是"; else $line["是否等长"] = "否";
 $isc = array_diff($uni, [1]);
 if(count($isc)<1) $line["是否唯一"] = "是"; else $line["是否唯一"] = "否";
 echo "<tr><td>".join("</td><td>",$line)."</td></tr>\r\n";
}
echo "</table>\r\n";
echo "<p><b>请核对:</b>核对数据:{$jj}行{$nozd}列</p>\r\n";
if(count($lies)>0) echo "<p><b>有".count($lies)."行</b>(行:".join(",",$lies).")列数与标题列数({$nozd})不一致</p>\r\n";
foreach($tt as $ti=>$tv){ echo "<p><b>$ti</b>: $tv</p>";}
 exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo $t; ?></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes" />
<script type="text/javascript">
console.log("问题反馈电话:","15058593138");
console.log("问题反馈邮件:","admin@12391.net");
function $(objId){
return document.getElementById(objId);
}
function loadcha(xid) {
var xmlhttp;
var Stxt= "nums=aa";
Stxt+="&tips="+ encodeURIComponent($("tips").value);
//$("tips").innerHTML = "正在加载...";
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var btxt = xmlhttp.response;
if(btxt == "err01"){ $("tipx").innerHTML = "!"; return false;}
$('tipx').innerHTML = xmlhttp.response;
}
}
xmlhttp.open("POST", "?x=cha&tt="+Math.random(), true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(Stxt);
}
 
</script>
<style>
div,#tipx{display:block;width:99.7%;border:0;margin-top:5px;}
textarea{display:block;width:99.7%;border:1px solid #ccc;height:160px;}
table{margin:20px auto;border-left:1px solid #a2c6d3;border-top:3px solid #0180CF;font-size:12px;width:99.7%;}
table td{border-right:1px solid #a2c6d3;border-bottom:1px solid #a2c6d3;padding:2px;word-wrap:break-word;word-break:break-all;}
td{min-width:30px;max-width:490px;}
.tt{background-color: #f2f2f2;}
b{color:red;}
#submit{ height:35px;}
</style>
</head>
<body>
 
<form class="form" id="form" method="POST" act="?act=cha" >
<p><?php echo $t; ?></p>
<textarea id="tips">
姓名	学号	身份证	科目1	科目2	科目3	科目4	科目5	科目.	科目N
李一一	10001001	90001001	87	84	75	91	83	76	87
李二	10001002	90001001	95	81	81	71	60	8299
李三	10001003	90001003	68	80	65	79	68	71	91
李四	10001004	90001004	82	80	75	90	87	1.23457E+15	81
李五	10001005	90001005	60	64	61	71	73		61
李六	10001006	90001006	62	69	77	73	96	6	82
李七	10001007	90001007	98	72	68	59	84	333	92
</textarea>
 <input type="button" id="submit" value="提交分析" onclick="loadcha('xid')">
<div id="tipx"></div>
 </form>
</body>
</html>

仅供娱乐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pandas DataFrame 导出到Excel格式美化

默认情况下&#xff0c;DataFrame 的 to_excel() 方法导出到 Excel 格式是比较丑的&#xff0c;本篇的代码演示了用一种比较简单的方法进行美化。要点&#xff1a; 使用 Excel 的 Table &#xff08;经常被称为超级表&#xff09;自动列宽 美化前&#xff0c;输出的格式如下&…

高级统计方法 第2次作业

概念 1. &#xff08;a&#xff09; 光滑度高的好&#xff0c;样本足够多光滑度越高就越能表征真实情况&#xff0c;也能对预测变量更好的预测。 &#xff08;b&#xff09; 光滑度低的好&#xff0c;因为可能“过拟合”&#xff0c;一些误差大的数可能会较大的影响到预测…

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…

【Docker】Linux主机部署Docker

Docker部署 1.二进制文件部署 到如下地址&#xff0c;下载二进制包。 Docker官网&#xff1a;https://docs.docker.com/engine/install/binaries/ 网易镜像源&#xff1a;https://mirrors.163.com/docker-ce/linux/static/stable/x86_64/ 下载好的二进制包上传到主机&#xf…

【LeetCode】递归精选8题——基础递归、链表递归

目录 基础递归问题&#xff1a; 1. 斐波那契数&#xff08;简单&#xff09; 1.1 递归求解 1.2 迭代求解 2. 爬楼梯&#xff08;简单&#xff09; 2.1 递归求解 2.2 迭代求解 3. 汉诺塔问题&#xff08;简单&#xff09; 3.1 递归求解 4. Pow(x, n)&#xff08;中等&…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第11章 项目成本管理(一)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

消息队列-RabbitMQ:workQueues—工作队列、消息应答机制、RabbitMQ 持久化、不公平分发(能者多劳)

4、Work Queues Work Queues— 工作队列 (又称任务队列) 的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。我们把任务封装为消息并将其发送到队列&#xff0c;在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时&#xff0c;这些工作…

python51-Python流程控制if分支之不要随意缩进

需要说明的是,虽然Python 语法允许代码块随意缩进N个空格,但同一个代码块内的代码必须保持相同的缩进,不能一会缩进2个空格,一会缩进4个空格。例如如下代码。 上面程序中第二条print语句缩进了5个空格,在这样的情况下,Python解释器认为这条语句与前一条语句(缩进了4个空格…

用html编写的招聘简历

用html编写的招聘简历 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

没有代码签名证书会怎么样?

随着Windows的SmartScreen功能的普及&#xff0c;如果一个软件发布的时候没有通过代码签名证书进行数字签名&#xff0c;那这个软件从发布&#xff0c;下载&#xff0c;安装&#xff0c;运行等&#xff0c;基本都会遭到系统的风险警告&#xff0c;运行拦截。其目的在于警示用户…

MapGIS 10.6 Pro前端开发低代码,快速构建WebGIS应用

随着实景三维、CIM、数字孪生等的快速发展&#xff0c;相关应用开发需求的市场增长对企业IT交付能力的要求越来越高&#xff0c;为了确保质量并实现提效降本&#xff0c;并让专业开发者更加专注于更具有价值和创新型的工作&#xff0c;低代码开发技术成为大家的优先选择。 为了…

工作入职必备:一寸照片尺寸要求及自拍换底色方法

踏入职场的第一步&#xff0c;往往从一张小小的一寸照片开始。这张看似不起眼的照片&#xff0c;却是你给新同事、新领导的第一印象。今天&#xff0c;我们就来深入探讨一寸照片的尺寸要求&#xff0c;以及如何巧妙地通过自拍来更换背景颜色&#xff0c;让你的入职照片既专业又…

【Java EE初阶二十一】关于http(二)

2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的&#xff0c;如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示&#xff1a; HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …

我国为分散染料(分散性染料)生产及出口大国 合成纤维领域为其主要需求端

我国为分散染料&#xff08;分散性染料&#xff09;生产及出口大国 合成纤维领域为其主要需求端 分散染料又称分散性染料&#xff0c;指分子结构中不含水溶性基团的染料。与其他染料相比&#xff0c;分散染料具有耐光性好、色彩饱和度高、易于分散、绿色环保等优势&#xff0c;…

探索未来-Sora

AI如何将静态图像转化为动态、逼真的视频&#xff1f; OpenAI 的 Sora 通过时空片段&#xff08;以下统称片段&#xff09;的创新使用给出了答案。 Sora 展示与探讨 在快速发展的生成模型领域&#xff0c;OpenAI 的 Sora成为一个重要的里程碑&#xff0c;有望重塑我们对视频生…

Python编程实验四:函数的使用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 第3题 第4题 第5题 四、实验结果分析与体会 一、实验目的与要求 &#xff08;1&#xff09;通过本次实验&#xff0c;学生应掌握函数的定义与调用的基本语法&#xff0c;能根据需要…

K8S的架构(1)

目录 一.k8s K8S有 master 和 worker node 两类节点&#xff1a; ​编辑 二.K8S创建Pod资源的工作流程 三.K8S资源对象 Pod&#xff1a;是K8S能够创建和管理的最小单位。 Pod控制器: 四.K8S资源配置信息 一.k8s kubernetes &#xff1a; Google旗下的容器跨主机编排…

linux上安装bluesky的步骤

1、设备上安装的操作系统如下&#xff1a; orangepiorangepi5b:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy 2、在用户家目录下创建一个目录miniconda3目录&a…

如何系统地自学Python?

如何系统地自学Python&#xff1f; 如何系统地自学Python&#xff1f;1.了解编程基础2.学习Python基础语法3.学习Python库和框架4.练习编写代码5.参与开源项目6.加入Python社区7.利用资源学习8.制定学习计划9.持之以恒总结 如何系统地自学Python&#xff1f; 作为一个Python语…

实现Slider 滑块组件标记动态变化

实现以上效果&#xff0c;下拉框、slider滑块、按钮都在同一行&#xff0c;设置flex布局后&#xff0c;发现silider滑块最右边的标记数字一直都如下竖着显示&#xff0c;后来通过给源组件的标记区.el-slider__marks-text增加一个宽度后解决该问题。 <template><div>…