2011-10-26 50 views
6

1具有例如文本:功能,強調一個詞,提取文本靠近它

即使malesuada門沙拉軟的性能。整個打好 滅菌的蛋白質,把室外的香蕉。即使 malesuada門沙拉軟的性能。茉莉花獅子比足球。 營養足球電視裙子和有毒氣體。 Fusce dapibus,得力士交流 的cursus commodo,tortor mauris condimentum NIBH,UT發酵馬薩胡斯托坐阿梅德risus 。

顫抖的宣傳沒有免費的開發。始終以 蚤euismod前庭ID ligula的門。前庭ID ligula PORTA蚤euismod永遠忠誠。 各種仰臥但桑達苦笑了很多,不是很大。 PakSoft保留門極觸發性能倍。整個打好 組由毒蛋白戶外香蕉。

明天地產番茄辣椒胡蘿蔔發酵。即使 malesuada門沙拉軟的性能。提出了極大的方便運行或 熱明尼阿波利斯和球員。有時保護者軟爪。 繼電器任何鍋軟學校足球或足球的獅子。

該文本出現在我的網站上進行搜索的描述,我希望能夠突出一個字/串並提取它旁邊的文本。

我不知道是最好的方式將是PHP(可能是),或只使用Photoshop的功能。 1知道如何突出在Photoshop中一個字,但不知道如何提取文本。

在這個例子中,我想,因爲我的字符串搜索「番茄辣椒」下面的文本顯示爲說明。

....投入了大量的戶外aliquet.Cras 番茄辣椒胡蘿蔔 發酵。即使門....

正如你看到的我不是隻顯示高亮顯示的單詞,而且一些文本之前和之後。 什麼將是實現這一目標的最佳方法是什麼?

我使用的唰唰聲,失去平衡的搜索引擎在我的網站和我的CGI的頗有基礎是零,所以我更願意嘗試的PHP的方式。

感謝您的幫助

+0

str_replace($ word,「$ word」,$ result)? – elibyy

+0

但是,這仍然會返回整個文本,我只想提取它的摘要。匹配詞前後可能有10個單詞/ 100個字符。 – chifliiiii

回答

5

使用PHP(你可以做在JavaScript中一樣,雖然)正則表達式。

$regex = '/([A-Za-z0-9.,-]+\s*){0,5}\sconsectetur purus(\s|[,.!?])(\s*[A-Za-z0-9.,-]+){0,5}/'; 
preg_match($regex, $content, $matches); 
echo $matches[0]; 

這符合0-5的話使用字母數字字符或.,-一個(微調這一點),然後你正在尋找(帶或不帶末標點)的話建,其次是0-5的話。這將永遠不會打破中間的一個詞,因爲達到了一定數量的字符。

輸出:

posuere velit aliquet。

Cras mattis consectetur purus sit amet fermentum。 Etiam porta

現在,您可以對此進行微調,例如,刪除\n,添加...,突出顯示consectetur purus ...

+0

非常感謝,這做到了。讓我問你,如果這個詞出現在文本中不止一次,我該怎麼辦。然後,我可以提取所有的部分,以顯示他們togheter? – chifliiiii

+0

@chifliiiii你可能想看看preg_match_all – middus

+0

再次感謝,我會 – chifliiiii

1

這取決於你如何搜索請求和搜索引擎的工作方式後,得到你的答案。

如果你的目標是「打字」的搜索,如「谷歌」有 - 那麼它會更好的PHP,使其削減傳輸的數據和浪費較少的流量。

否則,如果你得到整個文本作爲響應並不介意負荷 - 使用正則表達式或計數string.charAt(int) JS做到這一點。

+0

是的,它的文本已經加載,因爲你認爲。你能給我一些關於如何使用JavaScript做到這一點? – chifliiiii

+0

var x = x.replace(「([\ S] {,INT_CHARS_TO_LEFT})」+ word +「([\ S] {,INT_CHARS_TO_RIGHT})」,「... $ 1 」+ word +「 $ 2。 ..「); –

+0

@chifliiiii或者,查看我在答案中發佈的正則表達式。 – middus

0

我們創建了一個小庫來執行此操作。它會突出顯示你提到的單詞,併爲你提供查詢單詞周圍的句子。

$lorumIpsum = "three paragraps of lrum ipsum"; 
TextSnippet::createSnippet('Lorem', $lorumIpsum); 

這將導致以下文字:

的Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 ... Etiam bibendum lorem nec tempus sollicitudin。 ... Sed in dapibus lorem。 ... Nunc turpis ipsum,ullamcorper等lorem。 Donec et metus hendrerit,interdum elit ut,dignissim dui。

類別als支持設置html標記以突出顯示,並設置最小和最大單詞fopr片段。

請參閱Github上的swisnl/textsnippet