Спасибо за добавление идей к вашему вопросу! На самом деле это довольно интересный.
Насколько я понимаю, вы ищете динамичный c способ комментирования / раскомментирования строк внутри файла.
Итак, давайте сначала определим наши параметры :
- Мы хотим манипулировать определенным c файлом (нам нужно имя файла)
- Мы хотим переключать определенные c номера строк внутри этого файла (список номеров строк) )
function file_toggler(string $file, array $lineNumbers)
Имея это в виду, мне нужно прочитать файл и разбить их строки на номера строк. PHP предоставляет для этого удобную функцию file()
.
file (): возвращает файл в массиве. Каждый элемент массива соответствует строке в файле с новой строкой.
Имея это в виду, у нас есть все, что нам нужно, чтобы написать функцию:
<?php
function file_toggler(string $file, array $lineNumbers)
{
// normalize because file() starts with 0 and
// a regular user would use (1) as the first number
$lineNumbers = array_map(function ($number) {
return $number - 1;
}, $lineNumbers);
// get all lines and trim them because
// file() keeps newlines inside each line
$lines = array_map('trim', file($file));
// now we can take the line numbers and
// check if it starts with a comment.
foreach ($lineNumbers as $lineNumber) {
$line = trim($lines[$lineNumber]);
if (substr($line, 0, 2) == '//') {
$line = substr($line, 2);
} else {
$line = '//' . $line;
}
// replace the lines with the toggled value
$lines[$lineNumber] = $line;
}
// finally we write the lines to the file
// I'm using implode() which will append a "\n" to every
// entry inside the array and return it as a string.
file_put_contents($file, implode(PHP_EOL, $lines));
}
toggleFileComments(__DIR__ . '/file1.php', [3, 4]);
Надеюсь, это поможет: -)