2013-04-29 97 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雖然。