php页面取出一个词的前6个词与后6个词,并在取出的内容中,第一个词的strlen要大于或等于2,如果取到的第一个词没有大于或等于2,就要舍去,直到第一个词长度大于等于2
怎么实现呀,
下面是我的代码:
$body=", . 在 昨天 举行 的 中国 房地产 投融资 大会上 某 机构 发布";
$result_arr = explode(" ", $body);
$keyword='中国';
$index = array_search($keyword,$result_arr);
$part="";
for($n=$index-6;$n<$index+6;$n++)
{  
$part .= $result_arr[$n];

echo $part."<br>";//这里可以输出 中国的前6个词与后6个词,只是第一个词是 标点符号,长度没有大于或等于2,那么显示的第一个词就应该向后移动到 在 字 ,上面的代码怎么修改呀,
thanks

解决方案 »

  1.   

    explode完成之后循环判断第一个词的长度,长度不够就array_shift(),够了去前六个词
      

  2.   

    $body = ', . 在 昨天 举行 的 中国 房地产 投融资 大会上 某 机构 发布';
    $arr = explode(' ', $body);
    $num = count($arr);
    $arr1 = array();
    $arr2 = array();
    foreach($arr as $k => $v){
    if(strlen($v) <= 2){
    array_shift($arr);
    }else{
    continue;
    }
    }
    for($j = 0; $j < 6; $j++){
    $arr1[] = $arr[$j];
    }
    echo '<pre>';print_r($arr2);exit;
      

  3.   

    楼上的,body是不能动的,body的第一个词如果长度大于2,可 中国 的前第六个词小于 2 怎么办呢,
    如果:上面的$body=="每一天,为明天, . 在 昨天 举行 的 中国 房地产 投融资 大会上 某 机构 发布";
    请在上面的代码上修改,thanks
      

  4.   

    你可以将$body赋给已个变量,对这个变量进行操作啊
      

  5.   

    或者循环strlen,直到i(strlen>=2)的时候,然后从i开始取值
      

  6.   

    function str($text,$len){
     $c = substr($text,-6);
     $fstr = substr($text,0,$len);
     $flen = 1;
     for($i = 0;$i<$len;$i++){
     if(ord(substr($fstr,$i,$flen)) > 0x80){
      $flen++;
      $arr[] = substr($fstr,$i,$flen);
      $arr[] = $i;
      return $arr;
     }
     }
    }
    $text = '每一天,为明天, . 在 昨天 举行 的 中国 房地产 投融资 大会上 某 机构 发布';
    $arr = str($text,6);
    echo substr($text,$arr[1],6).substr($text,-6,6);
      

  7.   

    for($n=$key_index-30;$n<$key_index+30;$n++)
    {  
    if(check_str_crontab($part_arr[$n]) && $new_part ==''){continue;}
    $new_part .= $part_arr[$n];
    }
    similar_text($part,$new_part,$per);
    if(round($per,2)>75)
    {
    $part .= '';
    }
    else
    {
    $part .= $new_part;
    }
    $new_part = "";function check_str_crontab($str)
    {
     
    $arr = array(',', ':', '.', '。', ';','?','!',')','、','"');
    $l = count($arr);
    for($i = 0; $i < $l; $i++)
    {  
    $cou=explode($arr[$i],$str); 
    if(count($cou)> 1)

       return true;
       exit;
     } 

    }
    }