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

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 слов.

Надеюсь, что ответил на Ваш вопрос!
  • +1
  • 02 февраля 2013, 12:23
  • igorrius

Комментарии (2)

RSS свернуть / развернуть
Класс! То что нужно было. БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЙ СПАСИБО!
Этот скрипт очень полезен при обработке ключевиков, то есть урезать ключи до нужной длины по словам, например.
Еще раз большое спасибо за скрипт.
+1
Не за что! Было интересно самому)
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
comments powered by Disqus