You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP读取文本文件匹配指定字符串 输出目标行到标签/文本框

实现思路
  • 原有代码仅单次调用fgets(),只能读取文件第一行,需要改为循环逐行读取整个文件的全部内容
  • 每读取一行就做字符串匹配校验,判断该行是否包含指定的搜索关键词
  • 收集所有匹配成功的行,统一渲染到页面的标签、文本框或文本域控件中
  • 增加搜索关键词的传参入口,支持动态指定搜索内容,无需每次修改代码换关键词
完整可运行代码
<!DOCTYPE html>
<html>
<body>
<!-- 搜索输入区域 -->
<form method="get" action="">
  <label>搜索关键词:</label>
  <input type="text" name="keyword" required>
  <button type="submit">开始搜索</button>
</form>

<br>
<!-- 结果展示文本域 -->
<label>匹配到的行内容:</label>
<textarea rows="8" cols="40" readonly>
<?php
// 接收到搜索关键词时才执行文件读取逻辑
if (isset($_GET['keyword']) && trim($_GET['keyword']) !== '') {
    $keyword = trim($_GET['keyword']);
    $myfile = fopen("test.txt", "r") or die("无法打开test.txt文件,请检查文件路径!");
    $matchedLines = [];

    // 循环逐行读取,直到文件末尾
    while (!feof($myfile)) {
        $currentLine = fgets($myfile);
        if ($currentLine === false) continue;
        
        // 匹配判断:PHP8+用str_contains,低版本替换为 strpos($currentLine, $keyword) !== false
        if (str_contains($currentLine, $keyword)) {
            $matchedLines[] = $currentLine;
        }
    }
    fclose($myfile);

    // 输出结果
    if (empty($matchedLines)) {
        echo "未找到包含指定关键词的内容行";
    } else {
        echo implode("", $matchedLines);
    }
}
?>
</textarea>
</body>
</html>
关键改动说明
  • 用while(!feof($myfile))循环包裹fgets()调用,实现全文件逐行遍历,不会读完第一行就终止
  • 新增搜索表单,支持用户动态输入要搜索的字符串,提交后自动触发匹配逻辑
  • 匹配到的内容统一输出到只读文本域控件中,如果你要放到普通标签里,直接把PHP输出逻辑放到<p>、<div>这类标签内部即可
  • 增加了空参数校验、无匹配结果提示、文件打开失败提示,避免运行时报错

内容的提问来源于stack exchange,提问作者MitchSavage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:54:18