可能重复:
如何选择句子的前 10 个单词?
我想显示内容词的 10 个词而不是字符
$string = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
结果应该是
“Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare”
可能重复:
如何选择句子的前 10 个单词?
我想显示内容词的 10 个词而不是字符
$string = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
结果应该是
“Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare”
试试这个功能:
function shorten_string($string, $wordsreturned)
{
$retval = $string;
$string = preg_replace('/(?<=\S,)(?=\S)/', ' ', $string);
$string = str_replace("\n", " ", $string);
$array = explode(" ", $string);
if (count($array)<=$wordsreturned)
{
$retval = $string;
}
else
{
array_splice($array, $wordsreturned);
$retval = implode(" ", $array)." ...";
}
return $retval;
}
在你的文字上,像这样:
$string = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$firsttenwords = shorten_string($string, 10);
从这里。
更新:现在它符合空间要求,也符合换行要求。
无论您在单词之间使用哪种“空格”,此版本都可以使用,并且可以轻松扩展以处理其他字符……它目前支持任何空格字符加 , . ; ? !
function getSnippet( $str, $wordCount = 10 ) {
return implode(
'',
array_slice(
preg_split(
'/([\s,\.;\?\!]+)/',
$str,
$wordCount*2+1,
PREG_SPLIT_DELIM_CAPTURE
),
0,
$wordCount*2-1
)
);
}
对于那些应该可能更喜欢原始格式:)
function getSnippet( $str, $wordCount = 10 ) {
return implode( '', array_slice( preg_split('/([\s,\.;\?\!]+)/', $str, $wordCount*2+1, PREG_SPLIT_DELIM_CAPTURE), 0, $wordCount*2-1 ) );
}
尝试:
$str = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$arr = explode(" ", str_replace(",", ", ", $str));
for ($index = 0; $index < 10; $index++) {
echo $arr[$index]. " ";
}
输出:
Lorem ipsum dolor sit amet,consectetur adipiscing elit。毛里斯·奥尔纳雷
我们可以使用 str_word_count 函数检索字符串中的单词。
有关该功能的更多说明,请参阅以下链接
http://php.net/manual/en/function.str-word-count.php
要在字符串中仅显示 10 个单词,请参考以下代码片段
$str='Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$words=str_word_count($str,true);
$a=array_slice($words,10);
$s=join('',$a);
echo $s;
像这样试试
$str = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$arr = explode(" ", str_replace(",",", ",$str), 10);
echo implode(" ", $arr);