帮小弟我把这函数精简下啊
帮我把这函数精简下啊,,
- 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,售價1,299元起。根據官方介紹,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
