- 論壇徽章:
- 0
|
- <?php
- /**
- * $kw 用戶輸入的關鍵詞組合 i.e: 'php 操作 - 手冊'
- * 運行該代碼片段之后將生成 $and , $or , $except 三個數(shù)組存放相應關鍵詞
- *
- * 說明這個實現(xiàn)辦法主要是依靠字符串分析,
- * 也無考慮個別GBK碼的低位剛好是 '|+-' 的情況, 可以嘗試用正則來處理
- */
- $kw = strtolower($kw);
- $kw = preg_replace("/\s+/s", " ", $kw);
- $rep = array(" and " => "+", " or " => "|", " + " => "+", " | " => "|", " - " => "-", " " => "+");
- $kw = strtr($kw, $rep);
- $and = array();
- $or = array();
- $except = array();
- $len = strlen($kw);
- $tmp = "";
- $var = "and";
- for ($i = 0; $i < $len; $i++) {
- if ($kw[$i] == '+') {
- if (!empty($tmp))
- array_push(${$var}, $tmp);
- $var = "and";
- $tmp = "";
- }
- else if ($kw[$i] == '-') {
- if (!empty($tmp))
- array_push(${$var}, $tmp);
- $var = "except";
- $tmp = "";
- }
- else if ($kw[$i] == '|') {
- if (!empty($tmp))
- array_push(${$var}, $tmp);
- $var = "or";
- $tmp = "";
- }
- else
- $tmp .= $kw[$i];
- }
- if (!empty($tmp)) array_push(${$var}, $tmp);
- // 處理完成得到 $and, $or, $except 三個數(shù)組
- print_r($and);
- print_r($or);
- print_r($except);
- ?>
復制代碼 |
|