使用PHP从文本文件生成表格并计算统计信息

使用php从文本文件生成表格并计算统计信息

本文档详细介绍了如何使用PHP从文本文件中读取数据,并将其展示为一个HTML表格。此外,还将演示如何计算表格中数据的统计信息,例如不同名称的数量、总薪资、最常见的城镇以及平均年龄,并将这些统计信息添加到表格的最后一行。

读取和解析文本文件

首先,我们需要从文本文件中读取数据。假设我们的文本文件名为 name.txt,并且数据的格式如下:

name:Ivan,Salary:5000,town:Sofia,age:20name:Pesho,Salary:1500,town:Pleven,age:19...

每行包含一个人的信息,信息由逗号分隔,每个字段由冒号分隔。以下代码展示了如何读取和解析这个文件:

<?php$file = fopen('name.txt', "r");$names = [];$cities = [];$salaries = [];$ages = [];// 确保文件成功打开if (!$file) {    die("无法打开文件!");}echo "";echo "";while (!feof($file)) {    $string = fgets($file);    // 移除字符串开头和结尾的空白字符    $string = trim($string);    // 检查是否为空行,防止解析错误    if (empty($string)) {        continue;    }    $finalArray = [];    $asArr = explode(',', $string);    foreach ($asArr as $val) {        $tmp = explode(':', $val);        // 使用 isset() 检查 $tmp[1] 是否存在        $finalArray[$tmp[0]] = isset($tmp[1]) ? trim($tmp[1]) : "";    }    $cols = array_values($finalArray);    // 确保 $cols 数组包含所有必需的元素    if (count($cols) != 4) {        continue; // 如果数据不完整,则跳过此行    }    [$name, $salary, $city, $age] = $cols;    $names[] = $name;    $salaries[] = $salary;    $cities[] = $city;    $ages[] = $age;    echo '';    foreach ($cols as $col) {        echo ''; // 使用 htmlspecialchars 进行转义    }    echo '';}fclose($file); // 关闭文件?>

代码解释:

立即学习“PHP免费学习笔记(深入)”;

fopen(‘name.txt’, “r”): 打开名为 name.txt 的文件,以只读模式打开。while (!feof($file)): 循环读取文件的每一行,直到文件结束。fgets($file): 从文件中读取一行。explode(‘,’, $string): 使用逗号分隔字符串,将其转换为数组。explode(‘:’, $val): 使用冒号分隔每个字段,提取键和值。trim(): 移除字符串开头和结尾的空白字符,确保数据清洁。htmlspecialchars(): 对输出到HTML的内容进行转义,防止XSS攻击。fclose($file): 关闭文件,释放资源。

注意事项:

始终在使用完文件后关闭文件,以释放资源。使用 trim() 函数清理数据,避免因空白字符导致的问题。使用 htmlspecialchars() 函数转义HTML输出,防止XSS攻击。添加错误处理机制,例如检查文件是否成功打开。检查数组长度,确保数据完整性。

计算统计信息

接下来,我们需要计算统计信息,包括不同名称的数量、总薪资、最常见的城镇以及平均年龄。

<?php// ... (前面的代码)$countOfNames = count(array_unique($names));$citiesCount = array_count_values($cities);$maxVal = max($citiesCount);$mostCommonCity = array_search($maxVal, $citiesCount);$sumOnAllSalary = array_sum($salaries);$averageAges = (int)(array_sum($ages) / count($ages));echo '
';echo '';echo '';echo ''; // 使用 htmlspecialchars 进行转义echo '';echo '';echo "
NameSalaryTownAge
' . htmlspecialchars($col) . '
' . $countOfNames . '' . $sumOnAllSalary . '' . htmlspecialchars($mostCommonCity) . '' . $averageAges . '
";?>

代码解释:

立即学习“PHP免费学习笔记(深入)”;

count(array_unique($names)): 计算不同名称的数量。array_unique() 函数移除数组中重复的值,然后 count() 函数计算剩余元素的数量。array_count_values($cities): 统计每个城镇出现的次数。max($citiesCount): 找到出现次数最多的城镇的次数。array_search($maxVal, $citiesCount): 找到出现次数最多的城镇的名称。array_sum($salaries): 计算所有薪资的总和。(int)(array_sum($ages) / count($ages)): 计算平均年龄,并将其转换为整数。

注意事项:

在计算平均年龄时,使用 (int) 将结果转换为整数。根据实际需求,也可以选择保留小数部分。使用 htmlspecialchars() 函数转义HTML输出,防止XSS攻击。

完整代码

将以上代码合并,得到完整的代码如下:

<?php$file = fopen('name.txt', "r");$names = [];$cities = [];$salaries = [];$ages = [];// 确保文件成功打开if (!$file) {    die("无法打开文件!");}echo "";echo "";while (!feof($file)) {    $string = fgets($file);    // 移除字符串开头和结尾的空白字符    $string = trim($string);    // 检查是否为空行,防止解析错误    if (empty($string)) {        continue;    }    $finalArray = [];    $asArr = explode(',', $string);    foreach ($asArr as $val) {        $tmp = explode(':', $val);        // 使用 isset() 检查 $tmp[1] 是否存在        $finalArray[$tmp[0]] = isset($tmp[1]) ? trim($tmp[1]) : "";    }    $cols = array_values($finalArray);    // 确保 $cols 数组包含所有必需的元素    if (count($cols) != 4) {        continue; // 如果数据不完整,则跳过此行    }    [$name, $salary, $city, $age] = $cols;    $names[] = $name;    $salaries[] = $salary;    $cities[] = $city;    $ages[] = $age;    echo '';    foreach ($cols as $col) {        echo ''; // 使用 htmlspecialchars 进行转义    }    echo '';}fclose($file); // 关闭文件$countOfNames = count(array_unique($names));$citiesCount = array_count_values($cities);$maxVal = max($citiesCount);$mostCommonCity = array_search($maxVal, $citiesCount);$sumOnAllSalary = array_sum($salaries);$averageAges = (int)(array_sum($ages) / count($ages));echo '';echo '';echo '';echo ''; // 使用 htmlspecialchars 进行转义echo '';echo '';echo "
NameSalaryTownAge
' . htmlspecialchars($col) . '
' . $countOfNames . '' . $sumOnAllSalary . '' . htmlspecialchars($mostCommonCity) . '' . $averageAges . '
";?>

总结:

通过本文档,我们学习了如何使用PHP从文本文件中读取数据,并将其展示为一个HTML表格。此外,我们还学习了如何计算表格中数据的统计信息,例如不同名称的数量、总薪资、最常见的城镇以及平均年龄,并将这些统计信息添加到表格的最后一行。 记住,在实际应用中,需要根据具体需求进行适当的修改和优化。

以上就是使用PHP从文本文件生成表格并计算统计信息的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1292048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月11日 07:57:33
下一篇 2025年12月11日 07:57:52

相关推荐

  • php源码怎么解密_用PHP还原加密源码逻辑步骤教程【技巧】

    首先识别PHP代码的混淆类型,如Base64编码、Gzip压缩或字符串替换;接着通过base64_decode和gzinflate解码解压;再利用strtr映射表还原被替换的函数名;然后将eval替换为echo以输出中间代码;最后使用PHP-Unwinder等工具辅助反混淆,逐步恢复原始逻辑。 如果…

    2025年12月13日
    000
  • 即时发布系统:PHP帖子显示与数据库单次提交优化教程

    本教程旨在解决php帖子发布系统中常见的延迟显示和重复提交问题。通过将帖子显示逻辑模块化为独立文件,并在帖子成功插入数据库后立即引入该文件,实现新帖子即时显示,同时确保数据库仅记录一次提交,从而优化用户体验并提升系统效率。 在构建动态网站时,尤其是涉及用户内容发布的功能,开发者常常会遇到一个挑战:用…

    2025年12月13日 好文分享
    000
  • 怎么看php源码漏洞_看php源码漏洞位置与检测修复法【教程】

    答案是:PHP漏洞排查需关注输入处理、文件包含、命令执行等风险点,通过关键词搜索、工具扫描与攻击模拟结合分析,重点检查用户输入过滤、危险函数使用及权限控制逻辑,修复时应采用预处理、转义输出、白名单限制等安全措施,理解原理并实践才能提升审计能力。 想找出PHP源码中的漏洞,关键在于理解常见攻击方式与代…

    2025年12月13日
    000
  • 使用PHP PDO实现条件更新:当输入为空时保留现有数据

    本教程旨在指导开发者在使用PHP PDO进行数据更新时,如何实现特定字段(如密码)的条件更新。当用户输入为空时,数据库应保留现有值,而非更新为空或无效值。文章将详细解释如何利用SQL的`IF()`函数结合PHP的预处理语句来优雅地处理此类场景,避免常见的逻辑错误和SQL语法问题,确保数据更新的灵活性…

    2025年12月13日
    000
  • PHP中获取HTML Span元素内容的教程

    本文详细介绍了在php中从html “ 元素获取内容的方法。主要涵盖两种场景:一是利用php html dom解析库处理外部html文件或字符串,二是当html内容由php动态生成时,直接通过php变量获取数据,避免不必要的dom解析。文章提供了具体的代码示例和实践建议,旨在帮助开发者高…

    2025年12月13日
    000
  • PHP日期处理教程:巧用DateTime类高效提取月份信息

    本教程旨在解决php中处理用户提交日期时,通过繁琐的条件判断来确定月份的常见问题。我们将深入探讨如何利用php内置的`datetime`类,以一种更简洁、高效且健壮的方式解析日期字符串,并直接提取出所需的月份信息,从而避免复杂的字符串比较和冗长的`if/else`语句链,提升代码的可读性和维护性。 …

    2025年12月13日
    000
  • PHP 在线表单中实现电子邮件验证与特定域名/TLD拦截教程

    本教程详细介绍了如何在php在线表单中有效验证电子邮件地址,并实现对特定域名或顶级域名(tld)的拦截。文章将演示如何结合使用php内置的`filter_var`函数进行基础格式验证,以及`preg_match`函数通过正则表达式精确匹配并阻止来自黑名单的邮箱地址或特定顶级域名的邮箱,从而提升表单数…

    2025年12月13日
    000
  • PHP PDO 教程:智能更新用户密码字段(跳过空输入)

    本教程详细讲解了在使用 php pdo 更新用户数据时,如何智能处理密码字段。当用户在更新表单中未输入新密码时,我们将通过优化 sql `update` 语句,利用条件逻辑(如 `if` 函数)来保留数据库中原有的密码,避免误更新,确保数据安全与一致性。 在用户管理系统中,提供一个允许用户更新个人信…

    2025年12月13日
    000
  • PHP 文件搜索:输入验证与敏感查询排除策略

    本文旨在指导开发者如何在基于 php 的文件搜索功能中实现健壮的用户输入验证,以防止用户输入敏感或具有误导性的查询词。通过结合精确匹配和包含检查,我们可以有效排除如 `.`、`..`、`.htaccess` 或 `index` 等可能导致非预期结果或安全隐患的搜索请求,从而提升搜索功能的稳定性和安全…

    2025年12月13日
    000
  • 怎么检测php源码漏洞_检测php源码漏洞工具与修复法【技巧】

    检测与修复PHP源码漏洞需先使用静态分析工具扫描代码,识别SQL注入等风险;再手动审计exec、eval等危险函数的调用情况;接着通过OWASP ZAP等工具进行动态检测;随后修复漏洞,如采用预处理语句防SQL注入、输出转义防XSS、白名单机制防文件包含,并在php.ini中禁用高危函数;最后实施代…

    2025年12月13日
    000
  • php数组如何转换为xml的形式?

    答案是使用递归函数将PHP数组转换为XML。通过创建SimpleXMLElement对象作为根节点,遍历数组,非数字键生成对应标签,数字键转为item标签,子数组递归处理,值使用htmlspecialchars编码以避免特殊字符问题,最终输出合法XML结构。 PHP数组转换为XML可以通过递归函数实…

    2025年12月13日
    000
  • PHP DOM解析:高效获取HTML中的特定标题及其紧邻段落

    本教程将深入探讨如何使用php的domdocument和domxpath库,从复杂的html字符串中准确提取所有指定级别的标题(例如 )及其紧随的第一个段落( )。我们将详细解释为何应避免使用正则表达式解析html,并提供一个结构清晰、易于理解的专业解决方案,帮助开发者高效、可靠地处理html文档内…

    2025年12月13日
    000
  • php怎么插入视频源码_php插入视频源码标签与调用法【技巧】

    可通过HTML5 video标签结合PHP动态调用实现视频嵌入:首先在PHP文件中使用标签并设置属性,通过PHP变量动态赋值视频路径;其次为兼容不同浏览器可提供mp4、webm等多格式源,并添加备用提示文本;当需管理多个视频时,可将视频路径存入MySQL数据库,使用PDO或mysqli连接查询,循环…

    2025年12月13日
    000
  • 解决 PHP $_POST 为空:理解 HTML 表单 name 属性的重要性

    当 php 的 `$_post` 变量在表单提交后为空时,这通常是由于 html 表单中的输入元素缺少 `name` 属性所致。本文将深入解析 `name` 属性在表单数据传输中的关键作用,通过示例代码展示常见错误及正确实践,并提供相应的 php 处理方法,确保表单数据能够被服务器端正确接收和处理。…

    2025年12月13日
    000
  • 一般php文件内容解密怎么做_用PHP分析加密类型并逆向解密内容教程【技巧】

    首先识别PHP加密类型,如Zend Guard、ionCube、混淆或自定义加密;针对混淆型可将eval改为echo并解码base64与gzinflate还原代码;利用PHP Decoder、VLD或反混淆脚本辅助分析;仅在合法授权、安全审计或学习研究时进行解密,避免侵犯版权。 PHP文件被加密通常…

    2025年12月13日
    000
  • PHP动态生成Bootstrap表格样式丢失问题解析与优化实践

    在使用php从mysql数据库动态生成bootstrap表格时,常见的问题是表格样式(如`.table-striped`)无法正常显示。这通常是由于html结构不正确,特别是重复创建` `标签导致的。本文将详细解释此问题的原因,并提供一个优化的php代码示例,确保生成的表格能够正确应用bootstr…

    2025年12月13日
    000
  • 在SQL查询中安全地结合多重条件与会话数据过滤

    在SQL查询中,通过使用逻辑运算符(如`AND`)可以轻松地组合多个`WHERE`子句条件,从而实现更精细的数据过滤。当需要根据用户会话数据(如登录用户名)来限制结果集时,可以将用户会话变量作为条件之一加入`WHERE`子句。然而,直接将用户输入或会话数据拼接到SQL查询字符串中存在严重的安全风险,…

    2025年12月13日
    000
  • PHP与MySQL:利用数组数据优化HTML Select选项生成教程

    本教程详细介绍了如何使用php和mysql从数据库中获取基于数组id的数据,并动态生成html下拉菜单选项。文章首先指出在循环中构建下拉菜单的常见错误,并提供了正确的php代码结构。接着,重点讲解了如何通过优化sql查询,特别是利用`find_in_set`函数和mysql预处理语句,实现更高效、安…

    2025年12月13日
    000
  • PHP实现带附件邮件发送至Gmail的优化与安全实践

    本文旨在指导如何通过php安全有效地将用户上传的文件作为附件发送至gmail邮箱,避免直接存储在服务器上可能带来的安全风险。我们将重点介绍使用phpmailer库的优势,并详细阐述文件上传后的多重安全验证机制,包括文件类型、mime类型、大小以及图像特有的验证,以确保服务器安全和邮件发送信誉。 引言…

    2025年12月13日 好文分享
    000
  • PHP中高效提取指定HTML标题及其紧邻段落的教程

    本教程详细介绍了如何使用php的domdocument和domxpath库,从复杂的html字符串中准确提取所有h3标题及其紧邻的第一个段落。文章强调了避免使用正则表达式解析html的重要性,并提供了一个结构清晰、包含示例代码和注意事项的专业解决方案,帮助开发者安全、高效地处理html内容。 HTM…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信