2011-06-20 15 views
3

私は以下のgetExcerpt()関数を使用して、テキストのスニペットの長さを動的に設定しています。しかし、私のsubstrメソッドは現在、文字カウントに基づいています。私はそれを単語数に変換したいと思います。関数を分離する必要があるのですか、substrの代わりに使用できるPHPメソッドがありますか?文字カウントから単語カウントへのsubstrフィルタの変換

function getExcerpt() 
{ 
    //currently this is character count. Need to convert to word count 
    $my_excerptLength = 100; 
    $my_postExcerpt = strip_tags(
     substr(
      'This is the post excerpt hard coded for demo purposes', 
      0, 
      $my_excerptLength 
      ) 
     ); 
    return ": <em>".$my_postExcerpt." [...]</em>";} 
} 

答えて

4

使用str_word_count

は、パラメータの種類によっては、それはあなただけのサブセットを使用したい場合には(文字列(デフォルト)または見つかった単語の配列内の単語の数を返すことができますいずれかそれら)。あなたのスクリプトがピリオドとカンマや他の句読点を無視してはならないことを望むなら、あなたはこのアプローチを採用すべき

function getExcerpt($text) 
{ 
    $words_in_text = str_word_count($text,1); 
    $words_to_return = 100; 
    $result = array_slice($words_in_text,0,$words_to_return); 
    return '<em>'.implode(" ",$result).'</em>'; 
} 
+0

PHPには、見た目のすべての機能が組み込まれています。 – GWW

+0

クールですが、substrをstr_word_countに置き換えると、単語数だけが返されます。私は何が欠けていますか? –

+1

上記を試してください。これは句読点を保持しません(単語間にスペースを追加するだけなので)。別の解決策には、正規表現が含まれます。 –

1

:テキストのスニペットの最初の100個の言葉を返すので

、。

function getExcerpt($text) 
{ 
    $my_excerptLength = 100; 
    $my_array = explode(" ",$text); 
    $value = implode(" ",array_slice($my_array,0,$my_excerptLength)); 
    return 

} 

注:これは単なる例です。あなたに役立つことを願っています。それがあなたに役立つなら、投票するのを忘れないでください。

関連する問題