>php教程 >php手册 >php自动获取关键字代码

php自动获取关键字代码

WBOY
WBOY원래의
2016-05-25 16:38:581246검색

<?php
$mincipin = 5; //最小词频
$minlen = 4; //关键字最小长度
tiqukeyword($tiqustr, $minlen, $mincipin);
function tiqukeyword($tiqustr, $minlen, $mincipin) {
    $strlong = strlen($tiqustr);
    $arr = array();
    $k = - 1;
    for ($i = 0; $i < ($strlong - $mincipin * $minlen); $i++) {
        $end = ceil(($strlong - $i) / $mincipin + $i);
        for ($j = $minlen; $j < $end; $j++) {
            $num = 0;
            if (($guanjianzi = substr($tiqustr, $i, $j)) !== false) {
                $wz = $i + $j;
                $num++;
            } else {
                break;
            }
            while ($wz < $strlong) {
                if (($wz = strpos($tiqustr, $guanjianzi, $wz)) !== false) {
                    $num++;
                    $wz = $wz + strlen($guanjianzi);
                } else break;
            }
            if ($j == $minlen) {
                if ($num >= $mincipin) {
                    $maxnum = $num;
                    $k++;
                    $str = substr($tiqustr, $i, $j);
                    $arr[$k] = array(
                        $i,
                        $j,
                        $str,
                        $num,
                        0
                    );
                } else {
                    break;
                }
            } else {
                if ($num >= $maxnum) {
                    $maxnum = $num;
                    $str = substr($tiqustr, $i, $j);
                    $arr[$k] = array(
                        $i,
                        $j,
                        $str,
                        $num,
                        0
                    );
                } else break;
            }
        }
    }
    echo &#39;初步得到的数组:&#39;;
    print_r($arr);
    //echo &#39;<br/><br/><br/><br/>&#39;;
    $arrlong = count($arr);
    for ($i = 0; $i < $arrlong; $i++) {
        $bjarr = $arr[$i];
        $nowid = $i;
        if ($bjarr[4] == 1) continue;
        for ($j = $i + 1; $j < $arrlong; $j++) {
            if ($arr[$j][4] == 1) continue;
            $qujianks = $bjarr[0];
            $qujianjs = $bjarr[1] + $bjarr[0] - 1;
            $a = $arr[$j][0];
            $b = $arr[$j][1] + $arr[$j][0] - 1;
            if (($bjarr[2] == $arr[$j][2]) && ($bjarr[3] > $arr[$j][3])) $arr[$j][4] = 1;
            if ($a <= $qujianks && $qujianks <= $b && $a <= $qujianjs && $qujianjs <= $b) {
                if ($bjarr[3] <= $arr[$j][3]) {
                    $arr[$nowid][4] = 1;
                    $nowid = $j;
                    $bjarr = $arr[$j];
                }
            } elseif ($qujianks <= $a && $a <= $qujianjs && $qujianks <= $b && $b <= $qujianjs) {
                $arr[$j][4] = 1;
            }
        }
    }
    echo &#39;<br/><br/><br/><br/>重叠加标记后的数组:&#39;;
    print_r($arr);
    //开源代码phprm.com
    $jieguoarr = array();
    for ($i = 0; $i < $arrlong; $i++) {
        if ($arr[$i][4] == 0) $jieguoarr[] = $arr[$i];
    }
    echo &#39;<br/><br/><br/><br/>&#39;;
    echo &#39;最后得到的数组:&#39;;
    print_r($jieguoarr);
}


文章链接:

随便收藏,请保留本文地址!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.