PHP:在特定短语/单词和输出后在文本文件中搜索

时间:2011-06-13 22:59:47

标签: php arrays foreach readfile strpos

我正在尝试制作一个小的PHP脚本来自动化一些工作流程。 脚本要做的是读取一个文件(每个文件大约10-20kb)。 然后我需要在文件中搜索一些特定的短语和输出 - 如果短语出现 - 亚麻和短语。

例如,我有一个我正在阅读和搜索的文本文件。我搜索“花是黄色的”,“马是白色的”和“混合的”这些短语。

然后我的输出是:

第4行:“马是白的” 第19行:“混合;” 第22行:“混合;” 第99行:“花是黄色的” ......等等。

我正在使用此代码,它正确输出每一行和行号,但我不能创建只输出搜索短语的搜索例程:

<?php
$lines = file('my-text-file.txt');

foreach ($lines as $line_num => $line) {
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>  

我虽然是使用 strpos ,然后每当我发现短语的出现时,它会将其放入数组(或字典)中,其中行号为键,短语为值但是避风港能够使它工作,我认为可能有更好,更有效的方法。

我非常感谢任何帮助或建议,我将非常感激。

感谢
- 梅斯蒂卡

3 个答案:

答案 0 :(得分:2)

function search ( $what = array (), $filePath ) {
    $lines = file ( $filePath );

    foreach ( $lines as $num => $line ) {
        foreach ( $what as $needle ) {
            $pos = strripos ( $line, $needle );
            if ( $pos !== false ) {
                echo "Line #<b>{$num}</b> : " . htmlspecialchars($line) . "<br />\n";
            }
        }
    }
}

#   Usage:
$what = array ( 'The horse is white', 'The flower is yellow', 'mixed' );
search ( $what );

答案 1 :(得分:1)

创建一个脚本,用于grep输入并将结果传递到PHP脚本中。

答案 2 :(得分:0)