PHP条件循环 - 字符串长度

时间:2012-06-15 11:17:59

标签: php loops conditional do-while

我很抱歉,如果这是一个非常愚蠢的问题,或一个明显的新手错误 - 但我基本就是这样,我几乎从未使用过do-while循环(我知道 - 我自己无法理解它!这些年我是否有可能设法避免它?)

所以: 我想从文本段落的开头选择一些单词。 我使用了以下代码:

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

哪种方式有效,但问题是有时会产生EMPTY结果。 我认为那是因为段落包含空格,空行和/或回车... 所以我试图创建一个循环条件,它将继续尝试,直到字符串的长度至少为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

嗯 - 显然它不起作用(否则这个问题不会) - 现在它总是不产生任何东西。(空字符串)

2 个答案:

答案 0 :(得分:2)

最可能的问题是字符串在开头有空行。您可以使用ltrim()轻松摆脱它们。然后使用原始代码获取第一个实际换行符。

你的循环不起作用的原因是你告诉它拒绝任何超过8个字符的东西。

答案 1 :(得分:2)

尝试使用str_word_count

$words = str_word_count($string, 2);
  

2 - 返回一个关联数组,其中键是数字   字符串里面的单词的位置,值是实际的   单词本身

然后使用array_slice

$total_words = 70;
$selected_words = array_slice($words, 0, $total_words);