- 论坛徽章:
- 0
|
- <?php
- /**
- * $kw 用户输入的关键词组合 i.e: 'php 操作 - 手册'
- * 运行该代码片段之后将生成 $and , $or , $except 三个数组存放相应关键词
- *
- * 说明这个实现办法主要是依靠字符串分析,
- * 也无考虑个别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 三个数组
- print_r($and);
- print_r($or);
- print_r($except);
- ?>
复制代码 |
|