0

我正在使用 ereg 维护一些代码,并迁移到 preg_match (不要忘记分隔符),但它破坏了我的功能。

这是我的原始函数,它获取一个文件,并创建一个裁剪副本,该副本在遇到仅由 # 组成的行 6 次后停止:

function createStrippedFile($path1, $path2)
{
    $lines = file($path1);

    $handle = fopen($path2,"w");

    // 6
    $index = 0;

    foreach ($lines as $line)
    {
        $line = trim($line);

        if ($index != 7)
            fwrite($handle,$line."\r\n");

        if (ereg("^[#]+$",$line) !== FALSE)
            ++$index;
    }

    fwrite($handle,"END OF DOC\r\n");
    fclose($handle);
}

在这段代码中我改变了:

if (ereg("^[#]+$",$line) !== FALSE)

经过

if (preg_match('/^[#]+$/',$line) !== FALSE)

但现在它不再种植了。过渡时有什么我错过的吗?

PS:如果有人知道更好的方法来做我想做的事情,他也可以写出来。

4

1 回答 1

2

如果没有匹配项,问题似乎是 preg_match 返回 0,并且 0 !== FALSE。我会尝试删除此代码“!== FALSE”并检查它是否有效。

于 2011-10-17T13:31:27.893 回答