2016-04-29 31 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