帮小弟我把这函数精简下啊
帮我把这函数精简下啊,,
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php $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分钟,戈麦斯禁区外围左脚远射高出。'; $keyword="本德|鲍尔森"; //$keyword="射门|本德|鲍尔森"; //$keyword="丹麦|角球|头球|神奇"; function pipeidu($keyword,$varchar,$length){ $keyexp=explode('|',$keyword); $keyNum=count($keyexp); $ar = preg_split('/('.$keyword.')/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE); for($j=0; $j<count($ar)-1; $j++) { $t = $ar[$j][1]; $r[$t] = 0; for($i=$j; $i<count($ar); $i++) { if($ar[$i][0] == '本德'||$ar[$i][0] == '鲍尔森') { //[color=#FF0000]求此处适应一个或多个词组,越精简越好[/color]。 if($ar[$i][1]+strlen($ar[$i][0]) - $t < $length) $r[$t]++; else $r[$t=$ar[$i][1]] = 0; } } } if(isset($r)&&count($r)>0){ arsort($r); $r=array_keys($r); return $r=substr($varchar,$r[0],$length); } else{return $r=substr($varchar,0,$length);} } ?>
------解决方案--------------------
呵呵, 原来你就喜欢用这些半残废封装.
------解决方案--------------------
to qq120848369
lz 的代码不是如你所说 http://topic.csdn.net/u/20120619/02/c024bcf0-9c61-4e61-b58c-2844f0af2310.html
1,扫一遍找出所有的关键字。
2,再扫一遍,计算出每个end_index位置之前的关键字总数,同时计算180个字符之前的beg_index位置的关键字个数差值。
3,对关键字差值最大的180长度的段,strrstr,strstr分别头尾找到一个关键字,把多余的部分切掉,这样可以让字符再少一点。
的思路做的吗?
1、用 preg_split 完成找出所有的关键字
2、从每一个关键字出现的位置开始统计指定长度内关键字出现的次数(双重循环)
当然 lz 的代码也是用可优化的地方的,比如
外层循环中的
$t = $ar[$j][1];
$r[$t] = 0;
与内层循环中的
$r[$t=$ar[$i][1]] = 0;
存在重复计算的问题(因为外层的 $j 已经遍历了全部关键字节点)

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

XREAL在空间计算新品发布会上推出了一款全新产品——XREALBeamPro,售价1299元起。据官方介绍,XREALBeamPro是一款将2D应用逐渐释放到3D空间的计算终端,配备XREALAR眼镜,将构成“消费级AR空间计算完全体”,并将用户从手机侧的迁移成本降至最低。在设计上,XREALBeamPro看起来像智能手机,但并非手机产品,而是一款配备触控显示屏的空间计算终端。官方对其的定位为“像Phone一样的AR空间计算终端”。在发布会上,XREAL创始人兼CEO徐驰对BeamPro的能力

随着AR(增强现实)和VR(虚拟现实)的发展,这两项技术已经成为了创新和体验的重要组成部分。随着PHP作为网络编程语言的流行,使得PHP成为了开发AR/VR应用的一种可行性选择。本文将介绍如何使用PHP构建AR/VR应用。1、了解AR和VR技术在开始创建AR/VR应用程序之前,我们需要了解不同的技术和库。AR技术允许虚拟对象或信息与现实世界的环境进行交互。V

(映维网Nweon2023年09月26日)微软认为,MicroLED具有体积小、重量轻、亮度高、封装密度高的特点,可能特别适合用于需要高分辨率、小尺寸和轻重量的头戴式显示器。在名为”Microlensesprovidingwiderangechiefrayanglemanipulationforapaneldisplay“的专利申请中,微软介绍了一种为面板显示提供大范围主射线角操纵的微透镜,以及配置所述微透镜阵列的显示系统。其中,阵列中的每个微透镜对应于面板显示器的各自像素。微透镜的配置根据它们

1月9日-12日,超过4000家展商聚集在消费电子“春晚”CES上。作为消费级AR领域的创新企业,莫界科技首次参展CES,全面展示了中国AR企业在核心器件、整机方案和定制化服务方面的强大实力。在莫界展台上,展示的基于双目树脂衍射光波导+MicroLED的AR眼镜,引起了众多观众的兴趣,他们纷纷试戴并体验了其功能。这款AR眼镜具备了许多实用的特点。首先,佩戴者可以透过眼镜镜片实时查看文字内容,这使得阅读更加方便。其次,眼镜内置了麦克风,可以收集语音信息,并通过即时翻译功能将其转化为指定语言的文本,

NTT QONOQ Devices 推出了适用于智能手机的 Mirza 无线 XR 眼镜,使用户无需再纠结电线。该眼镜可以在现实空间中显示虚拟 AR 内容,例如 Pokemon Go 或在大型虚拟显示器上显示手机内容

作为一家以创新为核心驱动的技术公司,科视在智能视听技术方面能够提供全面的解决方案、丰富的行业经验和完善的服务网络等。在今年的InfoCommChina上,科视带来了RGB纯激光投影机、1DLP激光投影机、LED视频墙以及内容管理和处理解决方案等。在活动现场,一位专为天文展示的大型定制外球面球幕成为了现场的焦点,科视将其命名为《球体深空》,ChristieM4K25RGB纯激光投影机为其赋予了"绿活的生命力"。中国区商用事业部高级技术服务经理盛晓强先生表示:实现外球面球幕投影不难,但能够做小,且色

这可能是苹果2023年所发布的最具创新性的产品,也可能是苹果开启下一个时代的开篇之作。苹果VisionPro即将于当地时间2月2日正式开售,这款在去年发布时引起了轰动的产品,究竟有着怎样的使用体验?近日,国外科技主编兰斯·乌拉诺夫(LanceUlanoff)发布了一篇深度体验日记,或许能够让远在大洋彼岸的我们,更加直观、真实的了解这款产品。CNMO也编译了兰斯的相关日记。接下来,文中的“我”,指的便是兰斯本人。文章经过了相关删减,但是不会影响阅读。无论你听说过或读到过

String中split方法使用String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组。1、一般用法用一般的字符,例如@或,等符号做分隔符时:Stringaddress="上海@上海市@闵行区@吴中路";String[]splitAddr=address.split("@");System.out.println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3
