PHP 隨機讀取 txt 檔案某一行內容
12,577 6
最近在開發一個類似「一言」的一句話輸出平台,資料方面我沒有用到 MySQL 也沒用到 SQLite,因為我打算用 txt 格式的文字來儲存資料。
理由很簡單,txt 寫出寫入的速度都比較快,而且不浪費太多的記憶體空間,這項技術難度也不高,只會涉及到 PHP 讀取文字的內容,下面分享一下我的經驗。
兩種方案
主要介紹以下兩種,第一種是參考網路上的,第二種是我自己想的,感覺還是我的方案比較好一些。
取得原始碼版
程式碼如下
PHP PHP
<?php
$data = file_get_contents($filename);
//按行分割數據
$arr = explode("\n", $data);
//隨機讀取100行
$rand = array_rand($arr,1); print_r($rand);
?>
不做太多的介紹了,會 PHP 基礎的小夥伴一看就懂。
寫入陣列版
基本思路是這樣的,取得總行數、產生隨機數、取得隨機行、輸出,程式碼如下
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)学到了,谢谢大佬。 但是第二种方法存在一个问题,有可能取到空行(即使txt里没有空行)
在什么情况下会获取到空行,能否提供一下txt
感谢!正有需要的!
另外博主大大能写个PHP咋个实现根据某个字符串查找其在txt文件的哪一行并且可以对哪一行整行数据重新写入,其他行的数据不变
产生随机行号时,不应该是0到n,应该是0到n-1
$n需要-1把 数组是按0开始计算的