0

これが非常にばかげた質問、または明らかな初心者の間違いである場合は申し訳ありませんが、私はこれと同じくらい基本的であり、以前は do - while ループをほとんど使用したことがありません (私は知っています - 私はそれを自分で理解することはできません! どうすれば可能ですか?私は何年もそれを回避することができた??)

so : テキスト段落の先頭からいくつかの単語を選択したい。次のコードを使用しました:

   $no_of_char = 70;
   $string = $content;

   $string = strip_tags(stripslashes($string)); // convert to plaintext
   $string = substr($string, 0, strpos(wordwrap($string, $no_of_char), "\n"));

どの種類が機能しますが、問題は、結果が空の場合があることです。段落にスペース、空行、および/または改行が含まれているためだと思います...したがって、文字列の長さが少なくともX文字になるまで試行を続けるループ条件を作成しようとしています..

   $no_of_char = 70;  // approximation - how many characters we want
   $string = $content;

do {
       $string = strip_tags(stripslashes($string)); // plaintext
       $string = substr($string, 0, strpos(wordwrap($string, $no_of_char), "\n")); // do not crop words
       } 
while (strlen($string) > 8); // this would be X - and I am guessing here is my problem

まあ-明らかに機能しません(そうでなければ、この質問は機能しません)-そして今では常に何も生成しません.(空の文字列)

4

2 に答える 2

2

最も可能性の高い問題は、文字列の先頭に空白行があることです。で簡単に取り除くことができますltrim()。次に、元のコードを使用して最初の実際の改行を取得します。

ループが機能しなかった理由は、8 文字を超えるものはすべて拒否するように指示したためです。

于 2012-06-15T11:20:45.860 に答える
2

str_word_countを使用してみてください:

$words = str_word_count($string, 2);

2 - 連想配列を返します。キーは文字列内の単語の数値位置であり、値は実際の単語そのものです。

次にarray_sliceを使用します。

$total_words = 70;
$selected_words = array_slice($words, 0, $total_words);
于 2012-06-15T11:21:59.650 に答える