Heim >Backend-Entwicklung >PHP-Tutorial >如何实现如搜索引擎对Description关键字那样查找匹配的字符串

如何实现如搜索引擎对Description关键字那样查找匹配的字符串

WBOY
WBOYOriginal
2016-06-13 10:28:42865Durchsuche

怎么实现如搜索引擎对Description关键字那样查找匹配的字符串?
如下:怎么在下面任意180个字符中 匹配出'德国'和‘皮球’出现次数最多所在的位置段?

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$varchar='德国和丹麦都在第一场比赛1-0获胜,在次轮比赛中,德国2-1击败荷兰,两场小组赛战罢,德国队虽然拿到了6分,但依然未能保证出线,最后一场如果输给丹麦仍然有出局可能。丹麦上一场在0-2落后的情况下连追两球,但最后还是2-3输给葡萄牙,将小组次席拱手让给葡萄牙。丹麦想要出线必须力争击败德国,好在他们也不缺乏击败德国的感觉。在两队最近3场交手中,丹麦令人吃惊地2胜1平占据上风,最近一次交手是在2010年8月,丹麦在落后两球情况下扳平比分。两队上一次在欧洲杯交手则是1992年欧洲杯决赛,当时正是丹麦童话的巅峰,北欧人2-0击败德国夺冠。在德国队前两场比赛中,戈麦斯成为最大的亮点。超级马里奥连续两场比赛包揽了德国3粒进球,恐怖的是他进3球居然只花了6脚射门。戈麦斯目前以3球排名射手榜首位,自从1976年欧洲杯穆勒单届射进4球以来,德国队此后36年还没有任何球员欧洲杯单届进球超过3个。左边锋波多尔斯基在此前两场小组赛均打满全场,国家队出场次数达到99场,本场有望实现百场。双方都没有对首发阵容进行大的调整,德国队只是因为博阿滕停赛而派上了本德,丹麦也只换上鲍尔森,队内元老罗梅达尔因伤缺席。本场德国前锋波多尔斯基迎来国家队第100场比赛,小将本德则是首次在国家队首发。第2分钟,赫迪拉禁区前沿左侧传中,中路无人拿到皮球,后点穆勒胸部停球后左脚抽射稍稍高出。第5分钟,丹麦左侧角球,本特纳远点头球攻门被诺伊尔拿到。1分钟后,德国迅速反击,厄齐尔左侧直塞,波多尔斯基传中,克亚尔解围不力,穆勒门前3米处射门被安德森神奇化解。第12分钟,戈麦斯禁区外围左脚远射高出。';


------解决方案--------------------
确定关键词了,那就substr_count($string, $key); 分段累加,保存最大的那段

------解决方案--------------------
好吧,算我没明白

我以为分段,就是各个段落中,分开计算即可
------解决方案--------------------
起码限制一下description的长度吧,这是《编程之美》里的最短摘要问题,或者类似的变形需求。

先找出字符串里所有的德国和皮球的出现位置,然后准备left, right指针指向头部,right往右走,一直到[left, right]同时包含两个关键字为止,然后left开始往右走,一直到任意一个关键字计数为要减少为0就停止,继续走right,方法一样。
------解决方案--------------------
不知道你的分段是如何界定的
你给出的示例数据有5个自然段,是否以此为准
还是不考虑自然段,而以每180个字符为一段
还是起点个可以是滑动的

------解决方案--------------------
第一步
PHP code
$ar = preg_split('/(德国|皮球)/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);print_r($ar);<div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn