【问题标题】:PHP function to get all matched lines from a filePHP函数从文件中获取所有匹配的行
【发布时间】:2013-01-24 14:12:22
【问题描述】:

我正在尝试从 html 文件中搜索多个匹配的行并返回这些行。

如果只有一个匹配,那么它可以工作。但是,如果有多个匹配项,它不会返回任何内容。

代码如下:

$line = getLineFromFile("abc.html", 'http://www.abc.com/');

echo $line;

function getLineFromFile($file, $string) {
    $lines = file($file);
    foreach($lines as $lineNumber => $line) {
        if(strpos($line, $string) !== false){
            return $lines[$lineNumber];
        }
    }
    return false;
}

为什么不返回所有匹配的行?

【问题讨论】:

    标签: php file search


    【解决方案1】:

    一旦你从一个函数返回,函数调用就会停止执行。您需要将结果存储在一个数组中,然后将其返回。

    function getLineFromFile($file, $string) {
        $lines = file($file);
        $matches = array();
        foreach($lines as $lineNumber => $line) {
            if(strpos($line, $string) !== false){
                $matches[] = $lines[$lineNumber];
            }
        }
        return $matches;
    }
    

    检查此函数的结果时,请确保检查的是空数组而不是 false

    【讨论】:

    • 效果很好!只有我不得不内爆那个数组。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-30
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多