6

重複の可能性:
文の最初の 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」である必要があります。

4

5 に答える 5

17

この機能を試してください:

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

ここから。

更新:スペースに準拠し、改行にも準拠しました。

于 2012-09-16T06:50:40.617 に答える
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 ) );
}
于 2012-09-16T07:31:21.427 に答える
3

試す:

$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、consecteturadipiscingelit。モーリスオーナレ

于 2012-09-16T06:51:56.737 に答える
2

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;
于 2012-09-16T10:02:05.937 に答える
-1

このようにしてみてください

$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);
于 2012-09-16T07:03:49.017 に答える