2

我想知道从英语句子中获取前 20 个单词的方法是什么。在进一步处理之前,我需要分析它的主语和动词。因为有些句子没用所以我不需要分析它们,而是转储它们:-D

好的,初学者先开始总是更好(pss有一句谚语或说法很符合我在英语中的要求 - 我是一个非常活跃的英语学习者;-D)

干得好:

$array=explode($string," ");
$con=$array[0];
$i=0;
foreach($array as $v)
{
  if($i++ == 20){break;}
  $con.=" ".$v[i];
}

哦,yezzz,任何人都可以帮助提供更整洁的功能或方法吗?

4

5 回答 5

1

您可以使用众所周知的 php 函数substr这是用法...

string substr ( string $string , int $start [, int $length ] )
于 2012-08-21T08:51:34.710 回答
1

array_slice()将为您切片数组。只需指定开始和结束元素:

$words = explode($string, ' ');
$firstTwenty = array_slice($words, 0, 20);

如果您想变得非常紧凑(但可读性较差),请改为执行以下操作:

$twentyWords= array_slice(explode($string, ' '), 0, 20);

$twentyWords将是一个数组。如果要将其连接回字符串,只需使用implode()

$newString = implode(' ', $twentyWords);
于 2012-08-21T08:54:37.470 回答
0

你可以试试这个功能...

$first_twenty_words = wordlimit($string, 20);

function wordlimit($string, $length = 20) 
{ 
   $words = explode(' ', $string); 
   if (count($words) > $length) 
       return implode(' ', array_slice($words, 0, $length)); 
   else 
       return $string; 
} 
于 2012-08-21T08:56:53.350 回答
0

这将使用空格作为单词边界分割单词并返回前 20 个:

implode(' ', array_slice(explode(' ', $sentence), 0, 20));

在某些情况下,单词边界可能不是空格;你也可以看看preg_matchand \b

信用:如何选择句子的前 10 个单词?

于 2012-08-21T08:57:00.127 回答
0

通过这种方式,您可以获得任何字符串的前 20 个单词:

    $str = "this is a string and i want to slice string after 20 words.
this is a string and i want to slice string after 20 words";

    $strArray = explode(" ",$str);
    $strArray = array_slice($strArray,0 , 20);
    $string =  implode(" ",$strArray);
    echo $string;
于 2012-08-21T09:03:51.960 回答