PHP在txt文件中搜索并回显整行

2022-08-30 09:59:49

使用php,我正在尝试创建一个脚本,该脚本将在文本文件中搜索并获取整行并回显它。

我有一个名为“numorder.txt”的文本文件(.txt),在该文本文件中,有几行数据,每5分钟就会有新行(使用cron job)。数据类似于:

2 aullah1
7 name
12 username

我该如何创建一个php脚本,它将搜索数据“aullah1”,然后抓取整行并回显它?(一旦回显,它应该显示“2 aullah1”(不带引号)。

如果我没有清楚地解释任何事情和/或您希望我更详细地解释,请发表评论。


答案 1

还有一个PHP示例,将显示多个匹配行:

<?php
$file = 'somefile.txt';
$searchfor = 'name';

// the following line prevents the browser from parsing this as HTML.
header('Content-Type: text/plain');

// get the file contents, assuming the file to be readable (and exist)
$contents = file_get_contents($file);

// escape special characters in the query
$pattern = preg_quote($searchfor, '/');

// finalise the regular expression, matching the whole line
$pattern = "/^.*$pattern.*\$/m";

// search, and store all matching occurences in $matches
if (preg_match_all($pattern, $contents, $matches))
{
   echo "Found matches:\n";
   echo implode("\n", $matches[0]);
}
else
{
   echo "No matches found";
}

答案 2

像这样做。此方法允许您搜索任何大小的文件(大尺寸不会使脚本崩溃),并将返回与所需字符串匹配的所有行

<?php
$searchthis = "mystring";
$matches = array();

$handle = @fopen("path/to/inputfile.txt", "r");
if ($handle)
{
    while (!feof($handle))
    {
        $buffer = fgets($handle);
        if(strpos($buffer, $searchthis) !== FALSE)
            $matches[] = $buffer;
    }
    fclose($handle);
}

//show results:
print_r($matches);
?>

请注意 strpos 与运算符一起使用的方式。!==


推荐