Создание фрагментов кода на PHP — распространенная задача в управлении контентом и разработке веб-сайтов. Отрывок — это сокращенная версия более длинного контента, часто используемая для предварительного просмотра или резюме. Разработчикам PHP может потребоваться создать фрагменты в зависимости от количества слов, предложений или абзацев. В этой статье рассматриваются методы достижения этой цели, лучшие практики и обработка случаев, когда количество превышает длину контента.

Отрывок из подсчета слов

Создание отрывка по количеству слов предполагает сокращение содержания на определенное количество слов.

function excerptByWordCount($content, $wordCount) {
    $words = explode(' ', $content);
    if (count($words) > $wordCount) {
        $words = array_slice($words, 0, $wordCount);
        $content = implode(' ', $words);
    }
    return $content;
}

Использование:

// Excerpt of first 50 words
$wordCountExcerpt = excerptByWordCount($originalContent, 50); 

Лучшие практики и обработка передачи:

  • Проверьте количество слов: Прежде чем сокращать, убедитесь, что количество слов исходного содержания превышает желаемую длину отрывка. Если нет, верните исходное содержимое.
  • Не ломайте слова: Убедитесь, что последнее слово в отрывке написано полностью, чтобы сохранить читабельность.
  • Добавьте многоточие: При желании добавьте многоточие (...) в конце, если контент сокращен.

Фрагмент по количеству предложений

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

function excerptBySentenceCount($content, $sentenceCount) {
    $sentences = explode('.', $content);
    if (count($sentences) > $sentenceCount) {
        $sentences = array_slice($sentences, 0, $sentenceCount);
        $content = implode('. ', $sentences) . '.';
    }
    return $content;
}

Применение

// Excerpt of first 3 sentences
$sentenceCountExcerpt = excerptBySentenceCount($originalContent, 3); 

Обновить excerptBySentenceCount Чтобы включать предложения с любыми завершающими знаками препинания (не только точками), вы можете изменить функцию, чтобы разделить содержимое с помощью регулярного выражения, которое соответствует любому типичному знаку препинания в конце предложения, например точке, восклицательному или вопросительному знаку. Вот как это можно сделать в PHP:

function excerptBySentenceCount($content, $sentenceCount) {
    // Use a regular expression to split the content by sentence-ending punctuation
    $sentences = preg_split('/(?<=[.!?])\s+/', $content, -1, PREG_SPLIT_NO_EMPTY);

    if (count($sentences) > $sentenceCount) {
        $sentences = array_slice($sentences, 0, $sentenceCount);
        $content = implode(' ', $sentences);
        // Check the last character to ensure it ends with punctuation
        if (!preg_match('/[.!?]$/', $content)) {
            $content .= '.';
        }
    }
    return $content;
}

Эта функция использует preg_split с регулярным выражением (regex) /(?<=[.!?])\s+/ который разбивает текст на пробелы (\s+), который следует за точкой, восклицательным или вопросительным знаком ([.!?]). (?<=...) — это положительный взгляд на утверждение, который проверяет наличие пунктуации в конце предложения, не включая его в разделение. PREG_SPLIT_NO_EMPTY Флаг гарантирует, что будут возвращены только непустые фрагменты.

ЧИТАТЬ  Форма ESUT Post UTME на академическую сессию 2024/2025 года - Bscholarly

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

Лучшие практики и обработка передачи:

  • Определение правильного предложения: Используйте точку, за которой следует пробел, чтобы разделить предложения. Это позволяет избежать разделения на периоды, используемые в сокращениях.
  • Проверьте количество предложений: Как и при подсчете слов, убедитесь, что в исходном контенте достаточно предложений.
  • Сохраняйте знаки препинания: Убедитесь, что отрывок заканчивается правильной пунктуацией, обычно точкой.

Выдержка по количеству абзацев

Чтобы создать фрагменты по количеству абзацев, вам необходимо сократить контент на определенное количество абзацев.

function excerptByParagraphCount($content, $paragraphCount) {
    $paragraphs = explode("\n", $content);
    if (count($paragraphs) > $paragraphCount) {
        $paragraphs = array_slice($paragraphs, 0, $paragraphCount);
        $content = implode("\n", $paragraphs);
    }
    return $content;
}

Использование:

// Excerpt of first 2 paragraphs
$paragraphCountExcerpt = excerptByParagraphCount($originalContent, 2); 

Лучшие практики и обработка передачи:

  • Используйте символы новой строки для абзацев: Абзацы обычно разделяются новыми строками (\n). Убедитесь, что ваш контент соответствует этому формату.
  • Проверьте количество абзацев: Проверьте, чтобы количество абзацев контента было достаточным для прохождения.
  • Обратите внимание на структуру контента: Сохраняйте структуру абзацев отрывка, чтобы сохранить целостность содержимого.

Фрагмент по количеству абзацев HTML

При работе с HTML-контентом вам понадобится извлекать фрагменты на основе <p> теги для сохранения структуры и форматирования исходного контента.

function excerptByHtmlParagraphCount($content, $paragraphCount) {
    preg_match_all('/<p[^>]*>.*?<\/p>/', $content, $paragraphs);
    $paragraphs = $paragraphs[0];

    if (count($paragraphs) > $paragraphCount) {
        $paragraphs = array_slice($paragraphs, 0, $paragraphCount);
        $content = implode(' ', $paragraphs);
    }
    return $content;
}

Использование:

// Excerpt of first 2 paragraphs
$paragraphCountExcerpt = excerptByHtmlParagraphCount($htmlContent, 2); 

Лучшие практики и обработка передачи:

  • Регулярные выражения для соответствия тегам: Использовать preg_match_all с регулярным выражением <p> теги. Такой подход гарантирует сохранение структуры и атрибутов тегов абзаца.
  • Обратите внимание на структуру HTML: Убедитесь, что фрагмент сохраняет структуру HTML. Избегайте разделения тегов, поскольку это может вызвать проблемы с рендерингом.
  • Проверьте количество абзацев: Как и в случае с обычным текстом, убедитесь, что количество абзацев в исходном содержании достаточно для перехода.
  • Обработка вложенных тегов: Помните, что абзацы могут содержать другие элементы HTML, например ссылки или интервалы. Убедитесь, что ваше регулярное выражение не содержит вложенных тегов в абзацах.
ЧИТАТЬ  Тысячи веб-сайтов WordPress были взломаны с помощью плагина для кражи пользовательских данных

Создание фрагментов на основе количества абзацев HTML в PHP — более сложная задача по сравнению с обработкой обычного текста. Важно осторожно использовать регулярные выражения, чтобы сохранить целостность структуры HTML. Этот метод особенно подходит для веб-приложений, которым необходимо отображать контент в его собственном формате. Как всегда, подтвердите длину исходного контента и учитывайте удобство пользователя при предоставлении фрагментов.

Да, WordPress имеет собственный набор функций и инструментов, которые упрощают создание фрагментов, что может значительно упростить процесс по сравнению с обработкой фрагментов вручную в PHP. Вот обзор основных функций WordPress, связанных со сниппетами:

Извлечь функцию в WordPress

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

the_excerpt()

Этот тег шаблона WordPress автоматически печатает фрагмент сообщения. Обычно это используется в темах для отображения краткого описания сообщения на страницах архива.

  • Использование: Место the_excerpt() в разделе «Цикл» файлов темы, где вы хотите отобразить фрагмент.
  • Поведение: По умолчанию отображаются первые 55 слов сообщения. Если в редакторе постов вручную задан сниппет, он будет отображаться.

get_the_excerpt()

Эта функция извлекает фрагмент, не отображая его, что дает вам больше контроля над тем, как и где его использовать.

  • Использование: get_the_excerpt($post) может использоваться для получения фрагмента определенного сообщения.
  • Настройка: Вы можете манипулировать возвращаемой строкой по мере необходимости перед ее отображением.

Регулировка длины отрывка

WordPress позволяет вам изменить длину фрагмента по умолчанию, используя excerpt_length фильтр.

function custom_excerpt_length($length) {
    return 20; // Return 20 words as the new excerpt length
}
add_filter('excerpt_length', 'custom_excerpt_length');

Управляйте большим количеством тегов и текстовыми фрагментами

the_content('Read more')

Эта функция отображает контент до тех пор, пока не отобразится тег «еще». Это полезно для отображения фрагмента произвольной длины непосредственно в редакторе контента.

ЧИТАТЬ  Индия надеется на неизбежную высадку на Луну после провала России | цифровые тренды

Настройте отрывок, добавив больше текста

Вы можете настроить текст, который появляется в конце фрагмента (например […]), с использованием excerpt_more фильтр.

function custom_excerpt_more($more) {
    return '...'; // Replace the default [...] with ...
}
add_filter('excerpt_more', 'custom_excerpt_more');

Обработка HTML фрагментами

По умолчанию фрагменты WordPress представляют собой обычный текст. Если вам нужно сохранять HTML-теги фрагментами, вам нужно создать для этой цели собственную функцию или использовать плагин.

Однако для дополнительных требований, таких как сохранение HTML-тегов во фрагментах или создание фрагментов на основе определенных элементов, таких как предложения или абзацы, может потребоваться специальное кодирование или плагины.

Source