Разделить строку с чтением по количеству слов

Мне нужна разделенная строка с 2 div, первым div с 20 словами и последним div с остальными словами, чтобы сделать ссылку для чтения с помощью javascript.

На данный момент у меня есть ограничение только на количество символов.

Как я могу разделить слова?

if ( $term && ! empty( $term->description ) ) {
            $first = substr($term->description, 0, 400);
            $rest = substr($term->description, 400);
            echo '<div class = "term-description"><div class = "first-letter">'.$first.'</div><div class = "last-letter">'.$rest.'</div></div>';
        }

Может быть, php.net/manual/en/function.wordwrap.php справится с этой задачей

Med 26.04.2018 17:11

WordWrap разбивает каждый предел слов, а не первый предел и остальные без разделения. Уже проверено.

Foxsk8 26.04.2018 17:12
взорваться в массив, возьмите первые 20 элементов, взорваться обратно в строку, затем возьмите остальные
Patrick Q 26.04.2018 17:14
stackoverflow.com/questions/4258557/…
Sourav Sachdeva 26.04.2018 17:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
1 027
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Этот код делает свое дело:

<?php

function SplitStringToParts($sourceInput, &$first, &$rest, $countWordsInFirst = 20)
{
    $arr_exploded = explode(" ", $sourceInput);

    $arr_part1 = array_slice($arr_exploded, 0, $countWordsInFirst);
    $arr_part2 = array_slice($arr_exploded, $countWordsInFirst);

    $first = implode(" ",$arr_part1);
    $rest = implode(" ",$arr_part2);    
}

$str = "str1 str2 str3 str4 str5 str6 str7 str8 str9 str10 str11 str12 str13 str14 str15 str16 str17 str18 str19 str20 str21 str22 str23 str24";

SplitStringToParts($str,$first,$rest,20);

echo $first."<br>";
echo $rest."<br>";

Выход:

str1 str2 str3 str4 str5 str6 str7 str8 str9 str10 str11 str12 str13 str14 str15 str16 str17 str18 str19 str20
str21 str22 str23 str24

Используйте функцию SplitStringToParts. В вашем случае вы должны называть это так: SplitStringToParts ($ term-> description, $ first, $ rest, 20);

После этого $first, $rest сохранит ваш результат

Нашел решение:

<?php
// sentence teaser
// this function will cut the string by how many words you want
function word_teaser($string, $count){
  $original_string = $string;
  $words = explode(' ', $original_string);

  if (count($words) > $count){
   $words = array_slice($words, 0, $count);
   $string = implode(' ', $words);
  }

  return $string;
}

// sentence reveal teaser
// this function will get the remaining words
function word_teaser_end($string, $count){
 $words = explode(' ', $string);
 $words = array_slice($words, $count);
 $string = implode(' ', $words);
  return $string;
}
?>

$string = "We are BrightCherry web design, and we're going to show you how to write a function to crop a string  by a certain amount of words."

//this will echo the first 10 words of the string
echo word_teaser($string, 10);

$string = "We are BrightCherry web design, and we're going to show you how to write a function to crop a string by a certain amount of words."

//this will echo the words after the first 10 words
echo word_teaser_end($string, 10);

Другие вопросы по теме