Миграция из ereg в preg_match: копирование файла до тех пор, пока шаблон не повторяется X раз - PullRequest
0 голосов
/ 17 октября 2011

Я поддерживал некоторый код, используя 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: Если кто-то знает лучший способ сделать то, что я пытаюсь сделать, он также может написать это.

1 Ответ

2 голосов
/ 17 октября 2011

Кажется, проблема в том, что preg_match возвращает 0 в случае отсутствия совпадений и 0! == FALSE. Я бы попытался удалить этот код "! == ЛОЖЬ" и проверить, работает ли он.

...