在 PHP 中,如果我在文件中找到一个单词,我可以将该单词所在的行放入 $string 中吗

发布于 2024-11-02 09:02:48 字数 104 浏览 3 评论 0原文

我想在一个大列表文件中查找一个单词。

然后,如果找到该单词,则获取在其中找到该单词的列表文件的整行?

到目前为止我还没有看到任何 PHP 字符串函数可以做到这一点

I want to find a word in a large list file.

Then, if and when that word is found, take the whole line of the list file that the word was found in?

so far I have not seen any PHP string functions to do this

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

如日中天 2024-11-09 09:02:48

使用行分隔的正则表达式来查找单词,那么您的匹配将包含整行。

类似于:

preg_match('^.*WORD.*$, $filecontents, $matches);

然后 $matches 将包含它找到的位置的完整行 WORD

Use a line-delimited regular expression to find the word, then your match will contain the whole line.

Something like:

preg_match('^.*WORD.*$, $filecontents, $matches);

Then $matches will have the full lines of the places it found WORD

鹿港巷口少年归 2024-11-09 09:02:48

您可以使用 preg_match:

$arr = array();
preg_match("/^.*yourSearch.*$/", $fileContents, $arr);

$arr 将包含匹配项。

You could use preg_match:

$arr = array();
preg_match("/^.*yourSearch.*$/", $fileContents, $arr);

$arr will then contain the matches.

听,心雨的声音 2024-11-09 09:02:48
$path = "/path/to/wordlist.txt";
$word = "Word";

$handle = fopen($path,'r');
$currentline = 1;  //in case you want to know which line you got it from
while(!feof($handle))
{
    $line = fgets($handle);
    if(strpos($line,$word))
    {
        $lines[$currentline] = $line;
    }
    $currentline++;
}
fclose($handle);

如果您只想找到该单词出现的一行,那么不要将其保存到数组中,而是将其保存在某个地方,并在匹配后break

这应该可以快速处理任何大小的文件(对大文件使用 file() 可能不好)

$path = "/path/to/wordlist.txt";
$word = "Word";

$handle = fopen($path,'r');
$currentline = 1;  //in case you want to know which line you got it from
while(!feof($handle))
{
    $line = fgets($handle);
    if(strpos($line,$word))
    {
        $lines[$currentline] = $line;
    }
    $currentline++;
}
fclose($handle);

If you want to only find a single line where the word occurs, then instead of saving it to an array, save it somewhere and just break after the match is made.

This should work quickly on files of any size (using file() on large files probably isn't good)

瑕疵 2024-11-09 09:02:48

试试这个:

$searhString = "search";
$result = preg_grep("/^.*{$searhString}.*$/", file('/path/to/your/file.txt'));
print_r($result);

说明:

  • file() 将读取您的文件并生成数组行
  • preg_grep() 将返回在其中找到匹配模式的数组元素
  • < code>$result 是结果数组。

Try this one:

$searhString = "search";
$result = preg_grep("/^.*{$searhString}.*$/", file('/path/to/your/file.txt'));
print_r($result);

Explanation:

  • file() will read your file and produces array of lines
  • preg_grep() will return array element in which matching pattern is found
  • $result is the resulting array.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文