---
title: "PHPでtxtファイルの特定の行をランダムに読み取る - 憂いを忘れる一枚"
description: "最近、「一言」のような一言出力プラットフォームを開発しています。データベースには MySQL も SQLite も使用していません。txt 形式のテキストでデータを保存するつもりだからです。"
canonical_url: "https://www.ikxin.com/ja/article/php-txt-line-reader"
last_updated: "2026-09-16T09:59:27.259Z"
locale: ja
meta:
  "og:description": "最近、「一言」のような一言出力プラットフォームを開発しています。データベースには MySQL も SQLite も使用していません。txt 形式のテキストでデータを保存するつもりだからです。"
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQ44GndHh044OV44Kh44Kk44Or44Gu54m55a6a44Gu6KGM44KS44Op44Oz44OA44Og44Gr6Kqt44G~5Y-W44KLIC0g5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2Cc_Article%2Ctitle_~UEhQ44GndHh044OV44Kh44Kk44Or44Gu54m55a6a44Gu6KGM44KS44Op44Oz44OA44Og44Gr6Kqt44G~5Y-W44KL%2Cdescription_~5pyA6L-R44CB44CM5LiA6KiA44CN44Gu44KI44GG44Gq5LiA6KiA5Ye65Yqb44OX44Op44OD44OI44OV44Kp44O844Og44KS6ZaL55m644GX44Gm44GE44G-44GZ44CC44OH44O844K~44OZ44O844K544Gr44GvIE15U1FMIOOCgiBTUUxpdGUg44KC5L2~55So44GX44Gm44GE44G-44Gb44KT44CCdHh0IOW9ouW8j-OBruODhuOCreOCueODiOOBp-ODh-ODvOOCv-OCkuS~neWtmOOBmeOCi-OBpOOCguOCiuOBoOOBi-OCieOBp-OBmeOAgg%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC10eHQtbGluZS1yZWFkZXIi%2Cs_qZ1nusYuLUm4EOdE.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_~UEhQ44GndHh044OV44Kh44Kk44Or44Gu54m55a6a44Gu6KGM44KS44Op44Oz44OA44Og44Gr6Kqt44G~5Y-W44KLIC0g5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2Cc_Article%2Ctitle_~UEhQ44GndHh044OV44Kh44Kk44Or44Gu54m55a6a44Gu6KGM44KS44Op44Oz44OA44Og44Gr6Kqt44G~5Y-W44KL%2Cdescription_~5pyA6L-R44CB44CM5LiA6KiA44CN44Gu44KI44GG44Gq5LiA6KiA5Ye65Yqb44OX44Op44OD44OI44OV44Kp44O844Og44KS6ZaL55m644GX44Gm44GE44G-44GZ44CC44OH44O844K~44OZ44O844K544Gr44GvIE15U1FMIOOCgiBTUUxpdGUg44KC5L2~55So44GX44Gm44GE44G-44Gb44KT44CCdHh0IOW9ouW8j-OBruODhuOCreOCueODiOOBp-ODh-ODvOOCv-OCkuS~neWtmOOBmeOCi-OBpOOCguOCiuOBoOOBi-OCieOBp-OBmeOAgg%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC10eHQtbGluZS1yZWFkZXIi%2Cs_qZ1nusYuLUm4EOdE.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,705  6

最近、「一言」のような一言出力プラットフォームを開発しています。データベースには MySQL も SQLite も使用していません。txt 形式のテキストでデータを保存するつもりだからです。

理由はとても簡単で、txt は書き込みや読み出しの速度が比較的速く、メモリ容量もあまり消費しません。また、この技術の難易度も高くなく、PHP によるテキストの読み取りだけが関係します。以下では、私の経験を共有します。

## 2つの方法

主に次の2つを紹介します。1つ目はネット上の情報を参考にしたもので、2つ目は自分で考えたものです。個人的には、やはり自分の方法のほうが少し良いと思います。

### ソースコード取得版

コードは次のとおりです。

 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/ja#website","@type":"WebSite","description":"「憂いを忘れる一枚」は、技術探究と日々の暮らしをテーマにした個人サイトです。Web 開発、バックエンド、DevOps の実践を記録し、ソフトウェアツールやデジタル体験、コードの外で得た見聞と思索を共有します。","inLanguage":"ja-JP","name":"憂いを忘れる一枚","url":"https://www.ikxin.com/ja","translationOfWork":{"@id":"https://www.ikxin.com/#website"}},{"@id":"https://www.ikxin.com/ja/article/php-txt-line-reader#webpage","@type":"WebPage","description":"最近、「一言」のような一言出力プラットフォームを開発しています。データベースには MySQL も SQLite も使用していません。txt 形式のテキストでデータを保存するつもりだからです。","name":"PHPでtxtファイルの特定の行をランダムに読み取る","url":"https://www.ikxin.com/ja/article/php-txt-line-reader","isPartOf":{"@id":"https://www.ikxin.com/ja#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/ja/article/php-txt-line-reader"]}]}]}
```

## Sitemap

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