本文整理汇总了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++;
}
//检测书名
//.........这里部分代码省略.........