如何使用PHP读取文本文件内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP读取文本文件内容相关的知识,希望对你有一定的参考价值。

参考技术A   利用php读取文本文件的内容,其实很简单,我们只需要掌握函数“file_get_contents();”的使用就可以了。下面,小编将作详细的介绍。
  工具/原料
  电脑一台
  WAMP开发环境
  方法/步骤
  file_get_content()函数介绍。使用file_get_contents()获取txt文件的内容,具体参数说明如下:
  2
  具体实例说明。从文本文件tst.txt中读取里面的内容并显示在浏览器中,具体代码和图示如下:
  <?php

  $file = 'tst.txt';
  $content = file_get_contents($file); //读取文件中的内容
  echo $content;
  ?>本回答被提问者和网友采纳

如何使用 PHP 在文本文件中搜索字符串

【中文标题】如何使用 PHP 在文本文件中搜索字符串【英文标题】:how to search for a string in text file using PHP 【发布时间】:2017-12-23 10:20:04 【问题描述】:

我有一个读取 TXT 文件并显示其内容的 php 代码。

我想让用户搜索他想要的任何单词,如果可用,系统将显示它和行号。

直到现在我能够阅读文本并显示它。

我知道我需要逐行读取它并存储在变量中,还是有更好的选择?

代码

<?php


    $myFile = "test.txt";

    $myFileLink = fopen($myFile, 'r');

    $myFileContents = fread($myFileLink, filesize($myFile));

    while(!feof($myFileContents))  
            echo fgets($myFileContents) . "<br />";
        

    if(isset($_POST["search"]))
    
        $search =$_POST['name'];
        $myFileContents = str_replace(["\r\n","\r"], "\n",  $myFileContents);
        if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches,PREG_OFFSET_CAPTURE))
        
            foreach($matches[1] as $match)
            
            $line = 1+substr_count(substr($myFileContents,0,$match[1]), "\n");
            echo "Found $search on $line";
            
        
    


    fclose($myFileLink);

    //echo $myFileContents; 
    ?>

    <html>
        <head>

        </head>
        <body>
         <form action="index.php" method="post">
              <p>enter your string <input type ="text"  id = "idName"  name="name" /></p>
              <p><input type ="Submit" name ="search" value= "Search" /></p>
        </form>
        </body>
    </html>

【问题讨论】:

file_get_contents 如果文件不是很大。 对于更大的文件,使用fgets 直到找到包含搜索字符串的行并保持正在处理的行的运行计数器 @rickdenhaan 现在我尝试了 feof () 和 fgets() 函数,但它显示此错误:警告:feof() 期望参数 1 是资源,c:\xampp\ 中给出的字符串htdocs\readfiletest\index.php 在第 10 行 警告:fgets() 期望参数 1 是资源,字符串在第 11 行的 c:\xampp\htdocs\readfiletest\index.php 中给出 那些函数需要$myFileLink而不是$myFileContents 【参考方案1】:

类似的东西

$myFileContents = file_get_contents($myFileLink);

if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
    print_r($matches);

使用 Preg 匹配所有且不区分大小写的标志。

获取行号要困难得多,因为您需要执行以下操作:

$myFileContents = "Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.";

$search = "non proident";

//normalize line endings.
$myFileContents = str_replace(["\r\n","\r"], "\n",  $myFileContents);

    //Enter your code here, enjoy!
if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches,PREG_OFFSET_CAPTURE))

    foreach($matches[1] as $match)
        $line = 1+substr_count(substr($myFileContents,0,$match[1]), "\n");
        echo "Found $search on $line";
    


输出

Found non proident on 5

你可以看到live here

如果它是一个大文件,您可以在阅读每一行时进行类似的搜索。像这样的

 $myFileLink = fopen($myFile, 'r');

 $line = 1; 

 while(!feof($myFileLink))  
     $myFileContents = fgets($myFileLink);
     if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
        foreach($matches[1] as $match)
           echo "Found $match on $line";
        
     
     ++$line;
 

【讨论】:

我将编辑我的问题并添加新代码看看

以上是关于如何使用PHP读取文本文件内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 在文本文件中搜索字符串

在LINUX 下 使用PHP 修改文本文件

PHP:从文件中读取特定行

PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

在PHP中,如何实现写入或创建另1个PHP文件?

Java 的 inputStream 读取文本内容