0

我正在尝试从 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;
}

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

4

1 回答 1

3

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

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检查此函数的结果时。

于 2013-01-24T14:14:01.443 回答