2013-04-29 116 views
1

我有两个字符串“Mures”和“Maramures”。我如何建立一个搜索功能,当有人搜索Mures时,它将只返回包含“Mures”单词的帖子,而不是包含“Maramures”单词的帖子。我尝试了strstr直到现在,但它现在可以工作。查找字符串中的确切字符串

+0

你试过了什么? – underscore 2013-04-29 16:40:45

+0

是否区分大小写? 'Mures'和'Mures'是否一样? – brbcoding 2013-04-29 16:41:25

+0

您将不得不编写代码来创建搜索功能。 http://php.net – Ejaz 2013-04-29 16:42:21

回答

11

你可以用正则表达式做到这一点,并\b字边界周围的字

preg_match("~\bMures\b~",$string)

例如:

$string = 'Maramures'; 
if (preg_match("~\bMures\b~",$string)) 
    echo "matched"; 
else 
    echo "no match"; 
+0

谢谢,我会试试看 – 2013-04-29 16:46:06

1

你如何检查strstr的结果?这里试试这个:

$string = 'Maramures'; 
$search = 'Mures'; 
$contains = strstr(strtolower($string), strtolower($search)) !== false; 
0

也许这是一个愚蠢的解决方案,还有更好的解决方案。但是您可以在字符串的开始和结束处为源字符串和目标字符串添加空格,然后搜索“Mures”。易于实现,无需使用任何其他功能:)

4

使用的preg_match功能

if (preg_match("/\bMures\b/i", $string)) { 
    echo "OK."; 
} else { 
    echo "KO."; 
} 
0

你可以做各种事情:

  • 搜索 '穆列什'(约空格)
  • 搜索区分大小写(所以'maures'会在'Maramures'中找到,但'Mures'不会)
  • 使用正则表达式在字符串中搜索('字边界+ Mures +字b oundary') - 这也看看:Php find string with regex
0
function containsString($needle, $tag_array){ 
    foreach($tag_array as $tag){ 
     if(strpos($tag,$needle) !== False){ 
      echo $tag . " contains the string " . $needle . "<br />"; 
     } else {   
      echo $tag . " does not contain the string " . $needle; 
     } 

    } 
} 
$tag_array = ['Mures','Maramures']; 
$needle = 'Mures'; 
containsString($needle, $tag_array); 

这样的功能会工作......可能不会像性感preg_match虽然。