---
title: "PHP 随机读取 txt 文件某一行内容 - 一纸忘忧"
description: "最近在开发一个类似“一言”的一句话输出平台，数据方面我没有用到 MySQL 也没用到 SQLite，因为我打算用 txt 格式的文本来储存数据。"
canonical_url: "https://www.ikxin.com/article/php-txt-line-reader"
last_updated: "2026-09-16T09:59:27.259Z"
locale: zh-cn
meta:
  "og:description": "最近在开发一个类似“一言”的一句话输出平台，数据方面我没有用到 MySQL 也没用到 SQLite，因为我打算用 txt 格式的文本来储存数据。"
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQIOmaj-acuuivu-WPliB0eHQg5paH5Lu25p-Q5LiA6KGM5YaF5a65IC0g5LiA57q45b-Y5b-n%2Cc_Article%2Ctitle_~UEhQIOmaj-acuuivu-WPliB0eHQg5paH5Lu25p-Q5LiA6KGM5YaF5a65%2Cdescription_~5pyA6L-R5Zyo5byA5Y-R5LiA5Liq57G75Ly84oCc5LiA6KiA4oCd55qE5LiA5Y-l6K-d6L6T5Ye65bmz5Y-w77yM5pWw5o2u5pa56Z2i5oiR5rKh5pyJ55So5YiwIE15U1FMIOS5n-ayoeeUqOWIsCBTUUxpdGXvvIzlm6DkuLrmiJHmiZPnrpfnlKggdHh0IOagvOW8j-eahOaWh-acrOadpeWCqOWtmOaVsOaNruOAgg%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3BocC10eHQtbGluZS1yZWFkZXIi%2Cs_XvzAid1bil-Ykqo_.png"
  "og:image:alt": "PHP 随机读取 txt 文件某一行内容 - 一纸忘忧"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "PHP 随机读取 txt 文件某一行内容"
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQIOmaj-acuuivu-WPliB0eHQg5paH5Lu25p-Q5LiA6KGM5YaF5a65IC0g5LiA57q45b-Y5b-n%2Cc_Article%2Ctitle_~UEhQIOmaj-acuuivu-WPliB0eHQg5paH5Lu25p-Q5LiA6KGM5YaF5a65%2Cdescription_~5pyA6L-R5Zyo5byA5Y-R5LiA5Liq57G75Ly84oCc5LiA6KiA4oCd55qE5LiA5Y-l6K-d6L6T5Ye65bmz5Y-w77yM5pWw5o2u5pa56Z2i5oiR5rKh5pyJ55So5YiwIE15U1FMIOS5n-ayoeeUqOWIsCBTUUxpdGXvvIzlm6DkuLrmiJHmiZPnrpfnlKggdHh0IOagvOW8j-eahOaWh-acrOadpeWCqOWtmOaVsOaNruOAgg%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3BocC10eHQtbGluZS1yZWFkZXIi%2Cs_XvzAid1bil-Ykqo_.png"
  "twitter:image:alt": "PHP 随机读取 txt 文件某一行内容 - 一纸忘忧"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **PHP 随机读取 txt 文件某一行内容**

2017.08.22 12,689  6

最近在开发一个类似“一言”的一句话输出平台，数据方面我没有用到 MySQL 也没用到 SQLite，因为我打算用 txt 格式的文本来储存数据。

理由很简单，txt 写出写入的速度都比较快，而且不浪费太多的内存空间，这项技术难度也不高，只会涉及到 PHP 读取文本的内容，下面分享一下我的经验。

## 两种方案

主要介绍以下两种，第一种是参考网上的，第二种是我自己想的，感觉还是我的方案比较好一些。

### 获取源代码版

代码如下

 PHP

```
<?php
$data = file_get_contents($filename); 
//按行分割数据
$arr = explode("\n", $data);
//随机读取100行
$rand = array_rand($arr,1); print_r($rand);
?>
```

不做太多的介绍了，会PHP基础的小伙伴一看就懂。

### 写入数组版

基本思路是这样的，获得总行数、产生随机数、获得随机行、输出，代码如下

 PHP

```
<?php
$f='1.txt';   //文件名
$a=file($f);  //把文件的所有内容获取到数组里面
$n=count($a); //获得总行数
$rnd=rand(0,$n);    //产生随机行号
$rnd_line=$a[$rnd]; //获得随机行
echo "$rnd / $n : $rnd_line"; //显示结果
?>
```

原理都在上面的注释里面了，应该都能懂吧，反正我觉得挺简单的。

## **评论**

(6)

1. [**未知狐**](https://xfox.fun)2020/02/06 16:21 Chrome 79 Windows 10

   学到了，谢谢大佬。 但是第二种方法存在一个问题，有可能取到空行（即使txt里没有空行）
   1. [**一纸忘忧**](https://www.ikxin.com/) 回复 未知狐2020/02/08 20:13 Chrome 80 Windows 10

      在什么情况下会获取到空行，能否提供一下txt
2. **沉醉于风**2020/02/09 20:53 Chrome 79 Windows 10

   感谢！正有需要的！
3. **沉醉于风**2020/02/09 20:54 Chrome 79 Windows 10

   另外博主大大能写个PHP咋个实现根据某个字符串查找其在txt文件的哪一行并且可以对哪一行整行数据重新写入，其他行的数据不变
4. **北云尘**2020/11/03 16:12 Chrome 78 Windows 10

   产生随机行号时，不应该是0到n，应该是0到n-1
5. **porry**2020/11/11 20:10 Chrome 86 Windows 10

   $n需要-1把 数组是按0开始计算的

## **发布评论**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/#website","@type":"WebSite","description":"一纸忘忧的个人网站，关于技术探索与日常生活，记录 Web 开发、服务端与 DevOps 实践，分享软件工具、数码体验，以及代码之外的见闻与思考。","inLanguage":"zh-CN","name":"一纸忘忧","url":"https://www.ikxin.com/","workTranslation":[{"@id":"https://www.ikxin.com/zh-tw#website"},{"@id":"https://www.ikxin.com/ko#website"},{"@id":"https://www.ikxin.com/en#website"},{"@id":"https://www.ikxin.com/ja#website"}]},{"@id":"https://www.ikxin.com/article/php-txt-line-reader#webpage","@type":"WebPage","description":"最近在开发一个类似“一言”的一句话输出平台，数据方面我没有用到 MySQL 也没用到 SQLite，因为我打算用 txt 格式的文本来储存数据。","name":"PHP 随机读取 txt 文件某一行内容","url":"https://www.ikxin.com/article/php-txt-line-reader","isPartOf":{"@id":"https://www.ikxin.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/article/php-txt-line-reader"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
