当前位置: 首页>>代码示例>>PHP>>正文


PHP SplitWord::simpleResult方法代码示例

本文整理汇总了PHP中SplitWord::simpleResult方法的典型用法代码示例。如果您正苦于以下问题:PHP SplitWord::simpleResult方法的具体用法?PHP SplitWord::simpleResult怎么用?PHP SplitWord::simpleResult使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SplitWord的用法示例。


在下文中一共展示了SplitWord::simpleResult方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: StartAnalysis

    /**
     * 开始执行分析
     * @parem bool optimize 是否对结果进行优化
     * @return bool
     */
    static private function StartAnalysis($optimize = TRUE) {
        if (!self::$isLoadDic) {
            self::$LoadDict();
        }
        self::$simpleResult = self::$finallyResult = array();
        self::$sourceString .= chr(0) . chr(32);
        $slen = strlen(self::$sourceString);
        $sbcArr = array();
        $j = 0;
//全角与半角字符对照表
        for ($i = 0xFF00; $i < 0xFF5F; $i++) {
            $scb = 0x20 + $j;
            $j++;
            $sbcArr[$i] = $scb;
        }
//对字符串进行粗分
        $onstr = '';
        $lastc = 1; //1 中/韩/日文, 2 英文/数字/符号('.', '@', '#', '+'), 3 ANSI符号 4 纯数字 5 非ANSI符号或不支持字符
        $s = 0;
        $ansiWordMatch = "[0-9a-z@#%\+\.-]";
        $notNumberMatch = "[a-z@#%\+]";
        for ($i = 0; $i < $slen; $i++) {
            $c = self::$sourceString[$i] . self::$sourceString[++$i];
            $cn = hexdec(bin2hex($c));
            $cn = isset($sbcArr[$cn]) ? $sbcArr[$cn] : $cn;
//ANSI字符
            if ($cn < 0x80) {
                if (preg_match('/' . $ansiWordMatch . '/i', chr($cn))) {
                    if ($lastc != 2 && $onstr != '') {
                        self::$simpleResult[$s]['w'] = $onstr;
                        self::$simpleResult[$s]['t'] = $lastc;
                        self::_deep_analysis($onstr, $lastc, $s, $optimize);
                        $s++;
                        $onstr = '';
                    }
                    $lastc = 2;
                    $onstr .= chr(0) . chr($cn);
                } else {
                    if ($onstr != '') {
                        self::$simpleResult[$s]['w'] = $onstr;
                        if ($lastc == 2) {
                            if (!preg_match('/' . $notNumberMatch . '/i', iconv(UCS2, 'utf-8', $onstr)))
                                $lastc = 4;
                        }
                        self::$simpleResult[$s]['t'] = $lastc;
                        if ($lastc != 4)
                            self::_deep_analysis($onstr, $lastc, $s, $optimize);
                        $s++;
                    }
                    $onstr = '';
                    $lastc = 3;
                    if ($cn < 31) {
                        continue;
                    } else {
                        self::$simpleResult[$s]['w'] = chr(0) . chr($cn);
                        self::$simpleResult[$s]['t'] = 3;
                        $s++;
                    }
                }
            }
//普通字符
            else {
//正常文字
                if (($cn > 0x3FFF && $cn < 0x9FA6) || ($cn > 0xF8FF && $cn < 0xFA2D)
                        || ($cn > 0xABFF && $cn < 0xD7A4) || ($cn > 0x3040 && $cn < 0x312B)) {
                    if ($lastc != 1 && $onstr != '') {
                        self::$simpleResult[$s]['w'] = $onstr;
                        if ($lastc == 2) {
                            if (!preg_match('/' . $notNumberMatch . '/i', iconv(UCS2, 'utf-8', $onstr)))
                                $lastc = 4;
                        }
                        self::$simpleResult[$s]['t'] = $lastc;
                        if ($lastc != 4)
                            self::_deep_analysis($onstr, $lastc, $s, $optimize);
                        $s++;
                        $onstr = '';
                    }
                    $lastc = 1;
                    $onstr .= $c;
                }
//特殊符号
                else {
                    if ($onstr != '') {
                        self::$simpleResult[$s]['w'] = $onstr;
                        if ($lastc == 2) {
                            if (!preg_match('/' . $notNumberMatch . '/i', iconv(UCS2, 'utf-8', $onstr)))
                                $lastc = 4;
                        }
                        self::$simpleResult[$s]['t'] = $lastc;
                        if ($lastc != 4)
                            self::_deep_analysis($onstr, $lastc, $s, $optimize);
                        $s++;
                    }

//检测书名
//.........这里部分代码省略.........
开发者ID:happyun,项目名称:tuan,代码行数:101,代码来源:SplitWord.class.php


注:本文中的SplitWord::simpleResult方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。