Миграция из ereg в preg_match: копирование файла до тех пор, пока шаблон не повторяется X раз
Я поддерживал некоторый код, используя 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 ответ
Решение
Кажется, проблема в том, что preg_match возвращает 0 в случае отсутствия совпадений и 0!== FALSE. Я бы попытался удалить этот код "!== ЛОЖЬ" и проверить, работает ли он.