Как удалить некоторые статьи в текстовом файле, которые имеют количество нечетных строк с PHP?

0

У меня есть сотни статей в одном текстовом файле. Разделение между изделием

I use tags <-→ and <*****>.

Пример:

<----->
sentence 1.1
sentence 1.2
<*****>
<----->
sentence 2.1
sentence 2.2
sentence 2.3
<*****>
<----->
sentence 3.1
sentence 3.2
<*****>

And now I want to remove articles that have odd number of sentences using PHP. Example:

<----->
sentence 1.1
sentence 1.2
<*****>
<----->
sentence 3.1
sentence 3.2
<*****>

Помогите мне, как удалить статьи с нечетным числом предложений с помощью PHP? Спасибо.

Теги:

2 ответа

0
Лучший ответ
$string = ' 
<-----> <br>
sentence 1.1 <br>
sentence 1.2 <br>
<*****><br>
<-----><br>
sentence 2.1<br>
sentence 2.2<br>
sentence 2.3<br>
<*****><br>
<-----><br>
sentence 3.1<br>
sentence 3.2<br>
<*****><br>
';

$fullArticles = explode('<*****><br>', $string);
$output = ''; 
foreach ($fullArticles as $article) {
    $sentences = explode(PHP_EOL, $article);
    #remove empty lines, just in case
    $sentences = array_filter($sentences);
    #remove <----> separator, always first line of article
    array_shift($sentences);
    if (!empty($sentences) && count($sentences) % 2 == 0) {
        $output .= '<-----><br>' 
            . PHP_EOL 
            . join(PHP_EOL, $sentences) 
            . PHP_EOL 
            . '<*****><br>' 
            . PHP_EOL;
    }   
}

echo $output;

Прочитайте всю строку ввода в массив статей, а затем разделите каждую статью на массив предложений. Теперь вы можете легко проверить, является ли количество предложений четным или нечетным. При нечетном (я также добавил условие для пустого), то не добавляйте его к выводу. Чтение и сохранение в файл зависит от вас. Вы также можете создать переменные для своих разделителей, чтобы не повторять себя.

  • 0
    спасибо, это работа для меня, сэр. благодарю вас :)
1

Ну, это не хороший способ обработки множества данных, но в любом случае я бы предложил получить все строки в txt файле в организованный массив, чтобы было легче найти текущую строку, которую вы хотите удалить.

Я также рекомендовал бы добавить ID (uniqe) для каждой строки в txt файле, что также могло бы помочь вам обработать определенную строку.

http://php.net/manual/en/function.explode.php (я думаю, у вас уже есть txt файл в одну гигантскую строку, тогда эта функция может вам помочь)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню