首页 > 后端开发 > php教程 > PHP 搜索关键字前后X个单词

PHP 搜索关键字前后X个单词

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-20 09:37:04
原创
988 人浏览过

//单词不能被拆分//内容里出现多个相同的, 只搜最前一个//省略部分用"..."表示//可以模糊查询//关键字可以是多个单词
登录后复制


麻烦大家帮我看下代码有没有问题(漏掉某种情况没考虑, 代码可以怎么优化下,以及其它问题)

function getSPContent($content, $keyword){    $keyword = trim($keyword);    $content = trim(strip_tags($content));    $keyword2 = explode(" ", $keyword);    $content2 = explode(" ", $content);    $start_pos = "x";    if(count($keyword2) > 1){        foreach ($content2 as $k => $v) {            preg_match("/{$keyword2[0]}/", $v, $matches);            if (!empty($matches)) {                foreach($keyword2 as $x=>$y){                    preg_match("/{$keyword2[$x]}/", $content2[$k+$x], $matches);                    if (!empty($matches) && $x == count($keyword2)-1) {                        $start_pos = $k;                        break;                    }elseif(!empty($matches)){                        continue;                    }else{                       break;                    }                }            }            if($start_pos != "x"){                break;            }        }    }else{        foreach ($content2 as $k => $v) {            preg_match("/{$keyword}/", $v, $matches);            if (!empty($matches)) {                $start_pos = $k;                break;            }        }    }    $max = 50;    $len = count($content2) - 1;    $content3 = "";    if ($len < $max) {        return $content;    } else {        if ($start_pos == "x") {            for ($i = 0; $i < $max; $i++) {                $content3 = $content3 . " " . $content2[$i];            }            return ltrim($content3) . "...";        } elseif ($start_pos <= $max / 2) {            for ($i = 0; $i < $start_pos + $max / 2; $i++) {                $content3 = $content3 . " " . $content2[$i];            }            return ltrim($content3) . "...";        } elseif ($start_pos + $max / 2 >= $len) {            for ($i = ($start_pos - $max / 2); $i <= $len; $i++) {                $content3 = $content3 . " " . $content2[$i];            }            return "..." . ltrim($content3);        } else {            for ($i = $start_pos - $max / 2; $i < $start_pos + $max / 2; $i++) {                $content3 = $content3 . " " . $content2[$i];            }            return "..." . ltrim($content3) . "...";        }    }}
登录后复制


回复讨论(解决方案)

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
php - 关于google搜索的一个问题
来自于 1970-01-01 08:00:00
0
0
0
php - 搜索联想功能数据库如何设计?
来自于 1970-01-01 08:00:00
0
0
0
无需文字语言即可加速 LIKE 查询
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板