PHP로 txt 파일의 특정 줄 내용을 무작위로 읽기

12,577 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. Chrome 79 Windows 10

    学到了,谢谢大佬。 但是第二种方法存在一个问题,有可能取到空行(即使txt里没有空行)

  2. 沉醉于风
    Chrome 79 Windows 10

    感谢!正有需要的!

  3. 沉醉于风
    Chrome 79 Windows 10

    另外博主大大能写个PHP咋个实现根据某个字符串查找其在txt文件的哪一行并且可以对哪一行整行数据重新写入,其他行的数据不变

  4. 北云尘
    Chrome 78 Windows 10

    产生随机行号时,不应该是0到n,应该是0到n-1

  5. porry
    Chrome 86 Windows 10

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

댓글 작성

© 2026 근심을 잊는 한 장. 모든 권리 보유.

근심을 잊는 한 장은 기술 탐구와 일상을 다루는 개인 웹사이트입니다. 웹 개발, 백엔드 및 DevOps 실무를 기록하고 소프트웨어 도구와 디지털 경험, 코드 밖의 견문과 생각을 나눕니다.