0

0

PHP CSV数据处理:批量提取URL参数中的关键词

聖光之護

聖光之護

发布时间:2025-10-09 14:32:01

|

567人浏览过

|

来源于php中文网

原创

php csv数据处理:批量提取url参数中的关键词

本教程详细介绍了如何使用PHP上传并解析CSV文件,将数据转换为关联数组。核心内容是演示如何遍历数组,从URL格式的query字段中精确提取并转换keywords参数的值,实现数据的批量清洗与格式化,最终生成符合要求的数据结构。在数据处理过程中,我们经常需要从结构化的数据源(如CSV文件)中提取特定信息,并对其进行格式化。当这些信息嵌套在复杂的字符串(如URL)中时,就需要运用一系列字符串处理技巧。本文将指导您完成一个典型的场景:上传CSV文件,解析其内容,并从每行数据中URL字段里提取特定的关键词。

1. CSV文件上传与初步解析

首先,我们需要一个HTML表单来允许用户上传CSV文件,并编写PHP代码来接收这个文件并将其内容解析成一个可操作的数组。

1.1 HTML文件上传表单

创建一个简单的HTML表单,用于选择并上传CSV文件:



1.2 PHP解析CSV文件

当表单提交后,PHP脚本会处理上传的文件。我们使用fgetcsv函数逐行读取CSV内容,并结合array_combine将每行数据与CSV头信息关联起来,形成一个易于访问的关联数组。

";
            }
        }
        fclose($file); // 关闭文件句柄

        echo "

原始解析数据:

"; echo "
";
        print_r($all_rows);
        echo "
"; } else { echo "错误:文件上传失败或未选择文件。"; // 根据$_FILES['filename']['error']的值提供更详细的错误信息 if (isset($_FILES['filename'])) { switch ($_FILES['filename']['error']) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: echo "文件过大。"; break; case UPLOAD_ERR_PARTIAL: echo "文件部分上传。"; break; case UPLOAD_ERR_NO_FILE: echo "未选择文件。"; break; case UPLOAD_ERR_NO_TMP_DIR: echo "缺少临时文件夹。"; break; case UPLOAD_ERR_CANT_WRITE: echo "写入磁盘失败。"; break; case UPLOAD_ERR_EXTENSION: echo "PHP扩展阻止了文件上传。"; break; } } } } ?>

运行上述代码并上传一个CSV文件(例如,内容如问题描述中的示例),您将看到一个包含所有CSV数据的关联数组。

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

2. 批量提取URL中的关键词

现在,$all_rows数组包含了CSV的所有数据,其中query键的值是一个URL字符串。我们的目标是从这个URL中提取keywords=后面的值,并替换掉原始的URL字符串。

寻鲸AI
寻鲸AI

寻鲸AI是一款功能强大的人工智能写作工具,支持对话提问、内置多场景写作模板如写作辅助类、营销推广类等,更能一键写作各类策划方案。

下载

例如,将: https://www.example.com/search/output/person/?loc=[%22105490917%22%2C%22101452733%22]&keywords=Computational%20Biologist&origin=host 转换为: Computational Biologist

由于数据存储在数组的每个元素中,我们需要遍历整个数组,并对每个元素的query字段进行独立处理。

2.1 关键词提取逻辑详解

我们将使用一系列PHP字符串函数来完成这个任务:

  1. strstr($haystack, $needle): 用于查找$needle在$haystack中首次出现的位置,并返回从该位置到字符串结尾的部分。这里,我们用它来定位keywords=子串,获取URL中包含关键词的部分。
  2. str_replace($search, $replace, $subject): 用于替换字符串中的特定子串。我们将用它来移除keywords=这个前缀,只留下关键词及其后面的内容。
  3. substr($string, $start, $length) 和 strpos($haystack, $needle): strpos用于查找$needle在$haystack中首次出现的位置。结合substr,我们可以截取从字符串开头到&符号之间的部分,从而精确地获取关键词。
  4. urldecode($string): URL中的特殊字符(如空格表示为%20)会被编码。urldecode函数用于将这些编码字符解码回其原始形式,使关键词更具可读性。

2.2 实现关键词提取

将上述逻辑应用于$all_rows数组的每个元素:

 $value) {
            // 1. 查找并截取从 'keywords=' 开始的字符串部分
            // 例如:'keywords=Computational%20Biologist&origin=host'
            $query_string_part = strstr($all_rows[$key]['query'], 'keywords=');

            if ($query_string_part !== false) { // 确保找到了 'keywords='
                // 2. 移除 'keywords=' 前缀
                // 例如:'Computational%20Biologist&origin=host'
                $keyword_segment = str_replace('keywords=', '', $query_string_part);

                // 3. 查找 '&' 符号的位置,并截取其之前的部分
                // 例如:'Computational%20Biologist'
                $amp_pos = strpos($keyword_segment, "&");
                if ($amp_pos !== false) {
                    $extracted_keyword = substr($keyword_segment, 0, $amp_pos);
                } else {
                    // 如果没有找到 '&',说明 'keywords=' 是最后一个参数
                    $extracted_keyword = $keyword_segment;
                }

                // 4. 对提取出的关键词进行URL解码
                $all_rows[$key]['query'] = urldecode($extracted_keyword);
            } else {
                // 如果没有找到 'keywords=',可以将 'query' 设置为默认值或空字符串
                $all_rows[$key]['query'] = ''; // 或者保留原值,取决于业务需求
            }
        }

        echo "

处理后的数据:

"; echo "
";
        print_r($all_rows);
        echo "
"; } else { echo "数组为空,没有数据可处理。"; } } ?>

3. 完整代码示例

将HTML表单、CSV解析和关键词提取逻辑组合在一起,形成一个完整的PHP脚本:




    
    
    PHP CSV文件处理与URL关键词提取
    



    


错误:无法打开上传的文件。

"; exit; } $all_rows = array(); // 读取CSV文件的第一行作为表头 $header = fgetcsv($file); // 逐行读取CSV数据 while (($row = fgetcsv($file)) !== false) { // 确保行数据与表头长度匹配 if ($header && count($header) == count($row)) { $all_rows[] = array_combine($header, $row); } else { echo "

警告:CSV行数据与表头不匹配或表头缺失,已跳过一行。

"; } } fclose($file); // 关闭文件句柄 echo "

原始解析数据:

"; echo "
";
            print_r($all_rows);
            echo "
"; // --- 批量提取URL中的关键词 --- if (!empty($all_rows)) { foreach ($all_rows as $key => $value) { $original_query = $all_rows[$key]['query']; // 1. 查找从 'keywords=' 开始的字符串部分 $query_string_part = strstr($original_query, 'keywords='); if ($query_string_part !== false) { // 2. 移除 'keywords=' 前缀 $keyword_segment = str_replace('keywords=', '', $query_string_part); // 3. 查找 '&' 符号的位置,并截取其之前的部分 $amp_pos = strpos($keyword_segment, "&"); if ($amp_pos !== false) { $extracted_keyword = substr($keyword_segment, 0, $amp_pos); } else { // 如果没有找到 '&',说明 'keywords=' 是最后一个参数 $extracted_keyword = $keyword_segment; } // 4. 对提取出的关键词进行URL解码 $all_rows[$key]['query'] = urldecode($extracted_keyword); } else { // 如果没有找到 'keywords=',则将 'query' 设置为空字符串或根据需求保留原值 $all_rows[$key]['query'] = ''; // 或 $all_rows[$key]['query'] = $original_query; } } echo "

处理后的数据:

"; echo "
";
                print_r($all_rows);
                echo "
"; } else { echo "

数组为空,没有数据可处理。

"; } } else { echo "

错误:文件上传失败或未选择文件。

"; // 根据$_FILES['filename']['error']的值提供更详细的错误信息 if (isset($_FILES['filename'])) { switch ($_FILES['filename']['error']) { case UPLOAD_ERR_INI_SIZE: echo "

文件过大 (超过php.ini限制)。

"; break; case UPLOAD_ERR_FORM_SIZE: echo "

文件过大 (超过HTML表单限制)。

"; break; case UPLOAD_ERR_PARTIAL: echo "

文件部分上传。

"; break; case UPLOAD_ERR_NO_FILE: echo "

未选择文件。

"; break; case UPLOAD_ERR_NO_TMP_DIR: echo "

缺少临时文件夹。

"; break; case UPLOAD_ERR_CANT_WRITE: echo "

写入磁盘失败。

"; break; case UPLOAD_ERR_EXTENSION: echo "

PHP扩展阻止了文件上传。

"; break; default: echo "

未知上传错误。

"; break; } } } } ?>

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2894

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1734

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1566

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

1099

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1546

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1277

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1669

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1309

2023.11.13

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

1

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号