Мне нужна разделенная строка с 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>';
}
WordWrap разбивает каждый предел слов, а не первый предел и остальные без разделения. Уже проверено.
Возможный дубликат Отображение отрывков сообщений, ограниченных количеством слов






Этот код делает свое дело:
<?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);
Может быть, php.net/manual/en/function.wordwrap.php справится с этой задачей