切10个字后的内容

时间:2012-09-16 06:47:43

标签: php string

  

可能重复:
  How to select first 10 words of a sentence?

我想显示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”

4 个答案:

答案 0 :(得分:18)

尝试此功能:

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);

来自here

更新:现在它符合空间要求,并符合新行。

答案 1 :(得分:4)

无论你在单词之间使用什么样的“空间”,这个版本都可以使用,并且可以轻松扩展以处理其他字符...它目前支持任何空格字符加,。 ; ? !

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 ) );
}

答案 2 :(得分:3)

我们可以使用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;

答案 3 :(得分:2)

尝试:

$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坐下来,精致的adipistur elit。 Mauris ornare