2016-04-29 34 views
-1

我有關鍵字短語abc,xyz,pqr,mno等。文本 - 「此文本包含abc和mno」,想要查找文本是否包含keyphrase字符串。 我正在尋找高效的解決方案。請在下面找到我目前的代碼。從文本中查找多個關鍵短語

<?php 
    $content = " this text contains keyphrases abc and mno "; 
    $tags = array(array('key_phrase'=>'abc'),array('key_phrase'=>'pqr'),array('key_phrase'=>'mno')); 
    foreach($tags as $tag){ 
     $matches = array(); 
     preg_match("/".$tag['key_phrase']."/", $content, $matches); 
     if(!empty($matches)){ 
      echo "key_phrase present ".$tag['key_phrase']; 
     } 
    } 
?> 
+0

strpos效率更高,資源消耗更少。 –

+0

此問題屬於[代碼評論](http://codereview.stackexchange.com/) –

+0

@ transporter_room_3 - http://codereview.stackexchange.com/questions/127025/find-multiple-keyphrases-from-a-text –

回答

1

如果您的目標是爲每個匹配的key_phrase做一些事情,這已經非常高效了。

preg_match返回true,如果發現有問題,所以你不需要$匹配。

foreach ($tags as $tag) { 
    if (preg_match("/".$tag['key_phrase']."/", $content)) { 
     echo "key_phrase present ".$tag['key_phrase']; 
    } 
} 

如果你只是想知道,如果任何 key_phrase比賽,你應該所有的形式結合起來,一個「大」正則表達式「ABC | XYC」。因爲這比單獨的測試更有效率。

+0

同意,但關鍵字會在未來增加,所以「abc | xyz」將不太可行。 –

+1

這取決於您的實際使用情況。這只是一個建議。 – colburton