2014-11-25 88 views
0

我正在寫一小段代碼來提取包含文本文檔中特定單詞的句子。基於特定模式從文本中提取句子

這裏有一句資格條件:

句子必須包含搜索詞。

句子必須以大寫字母開頭。

句子必須以句點結尾

句子必須至少包含8個單詞。

經過一番研究,我發現最快的方法是使用preg_split()但是我真的是regex的新手,因此我在前兩種情況下遇到困難。最後一個可以使用str_word_count()(我認爲)。

例子:

Der er en lang og bevæget forhistorie bag lov om varsling m.v. i forbindelse med afskedigelser af større omfang. Det er ikke en bureaukratisk lovtekst blandt så mange andre. 

搜索詞句:

bureaukratisk 

它將返回第二句Det er ikke en bureaukratisk lovtekst blandt så mange andre.因爲 它包含了我們的搜索詞,滿足這三個條件,以及

任何幫助將高度讚賞

此致 艾哈邁爾

+0

一個例子會更好。 – 2014-11-25 06:54:53

+0

好的。添加示例 – 2014-11-25 06:55:55

回答

1

要檢查是否詞存在於句子使用

if (strpos($str,'are') !== false) { 
    echo 'word is present'; 
} 

要檢查字計數

str_word_count($str); 

要檢查的第一個字用蓋子開始

if (strtoupper($str[0]) == $str[0]) 
{ 
    echo "match"; 
} 

編輯:從段落中獲取句子。

$strarr = explode(".",$para) 

foreach($strarr as $check) 
{ 

//use the functions i mentioned above here...if it matches print it or concanate it. 
} 
+0

問題是我有大量的文本,我需要從中提取句子。你的解決方案是好的,如果我已經有句子 – 2014-11-25 07:03:11

+0

好的等待編輯 – Vishnu 2014-11-25 07:03:55

+0

我已編輯,檢查它 – Vishnu 2014-11-25 07:09:28

1

你的正則表達式的字符串很可能會需要這些元素:

([A-Z]\w* (.*){6,} \w+[\.\?\!]) 

[A-Z] - any capital letter 
\w* - zero or more letters 
' ' - space 
(.*){6,} - six or more strings of anything ending with a space 
' ' - space 
\w+[\.\?\!] - at least one letter ending with a . or ? or ! 

現在我看到你的問題稍微複雜一點比我想象。但這是一個好的開始。 Check this site out

+0

有什麼方法可以找到我正在尋找使用正則表達式的單詞 – 2014-11-25 07:08:50

相關問題