Итак, как реализовать обрезку строк в файле средствами 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 слов.
Надеюсь, что ответил на Ваш вопрос!
![]()

