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