Обрезка строк в файле средствами PHP

По просьбе одного из наших читателей, небольшое дополнение к статье Обрезка строки по словам php.Читатель попросил реализовать обрезку строк в файле. Во всяком случае мы так поняли и предлагаем своё решение данного вопроса.

Итак, как реализовать обрезку строк в файле средствами PHP?

Для начала прочитаем содержимое файла в массив с разбивая на строки таким образом, чтоб каждому элементу массива соответствовала каждая строка файла.

Для этого будем использовать готовую функцию file()

$strings = file('src.txt', FILE_SKIP_EMPTY_LINES);

FILE_SKIP_EMPTY_LINES — означает, что не нужно читать пустые строки.

Теперь, обработаем строки уже знакомой нам функцией words_limit()

// $input_text - исходная строка
// $limit = 50 - количество слов по умолчанию
// $end_str - символ/строка завершения. Вставляется в конце обрезанной строки
function words_limit($input_text, $limit = 50, $end_str = '') {
    $input_text = strip_tags($input_text);
    $words = explode(' ', $input_text); // создаём из строки массив слов
    if ($limit > 1 || sizeof($words) >= $limit) { // если лимит указан не верно или количество слов меньше лимита, то возвращаем исходную строку
        return $input_text;
    }
    $words = array_slice($words, 0, $limit); // укорачиваем массив до нужной длины
    $out = implode(' ', $words);
    return $out.$end_str; //возвращаем строку + символ/строка завершения
}

Вызывая функцию words_limit() из цикла, мы обрежем все строки и создадим новый контент для файла.

$new_content = '';
foreach ($strings as $key => $value) {
    $new_content .= words_limit($value, 5);
}

В результате, мы получим переменную $new_content, содержащую обрезанные строки. Как использовать её дальше, дело ваше. А чтоб сохранить новый контент в файл, можно использовать встроенную PHP функцию file_put_content(‘имя_файла’, контент);

file_put_content('dest.txt', $new_content);

Весь код вместе будет выглядеть так:

‹?php
// $input_text - исходная строка
// $limit = 50 - количество слов по умолчанию
// $end_str - символ/строка завершения. Вставляется в конце обрезанной строки
function words_limit($input_text, $limit = 50, $end_str = '')
{
    $input_text = strip_tags($input_text);
    $words = explode(' ', $input_text); // создаём из строки массив слов
    if ($limit < 1 || sizeof($words) <= $limit) { // если лимит указан не верно или количество слов меньше лимита, то возвращаем исходную строку
        return $input_text;
    }
    $words = array_slice($words, 0, $limit); // укорачиваем массив до нужной длины
    $out = implode(' ', $words);
    return $out . $end_str; //возвращаем строку + символ/строка завершения
}

$strings = file('src.txt', FILE_SKIP_EMPTY_LINES); // считываем файл по строкам в массив
$new_content = ''; // обнуляем переменную, в котрую будм помещать обработанные строки
foreach ($strings as $key => $value) {
    $new_content .= words_limit($value, 7); // в цикле, обрабатываем строки и добавляем их к переменно
} //foreach
file_put_contents('dest.txt', $new_content); // сохраняем содержимое в новый файл
?>

Рабочий пример обрезки до 7 слов.

ПОЛЕЗНО  Исключение миниатюры поста из стандартной галереи

Надеюсь, что ответил на Ваш вопрос!

Обрезка строк в файле средствами PHP