-6

I have a string that can contain up to 2000 chars. I want to only show the first 40 words.

The string is $row['content']. How would I only show the first 50?

Thanks.

4

3 回答 3

5

假设单词将用空格分隔。

$words40=explode(" ", $string,41);
unset($words40[40]); // Discard the last element containing the remaining string

当然,这在标点符号上会失败,但是由于您没有提及您的字符串是否包含与人类可读语言或任何其他值有关的内容,因此没有理由假设它将是英语语法,因此是答案。

参考

于 2013-10-04T14:28:44.457 回答
3
$wordArray = str_word_count($row['content'], 1);
$wordArraySlice = array_slice($wordArray, 0, 40);
$wordString = implode(" ", $wordArraySlice);

echo $wordString;

此函数计算所有单词并返回一个数组。然后,您可以使用 array_slice 返回您需要的 40 - 50 个单词,然后将它们内爆以获取字符串...如果您愿意。

于 2013-10-04T14:32:39.897 回答
3

最简单的解决方案是wordwrap()。但既然你想要 40/50而不是符号,你应该这样做:

<?php

$string = "Your long string";
$result = preg_split('/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))/', $string, -1, PREG_SPLIT_NO_EMPTY);
$words = implode(' ', array_slice($result, 0 ,50));

?>

来自将文本拆分为单个单词的正则表达式

于 2013-10-04T14:32:36.567 回答