2012-04-07 73 views
1

我有一個這樣的字符串:找到,如果字符串在分隔符中所含PHP

$string = '[Canada] [United States]'; 

我需要檢測這樣

if($string contains Canada) { 
// Do stuff for Canada 
} 
+0

是否有可能將這些數據存儲在數組中,而不是字符串?遍歷數組要容易得多。 – mc10 2012-04-07 03:05:59

回答

4

您可以提取[]之間的所有文本,然後查看它是否在結果數組中找到。

preg_match_all('/\[(.*?)\]/', $string, $matches); 

if (in_array('Canada', $matches[1])) { 
    echo 'Hello, Canada!'; 
} 

CodePad

如果你只是用串搜索功能,你跑,你搜索的字符串是括號之間的較大塊的子串的風險。

0

使用strstr()東西。

+0

很確定我的回答是答案,而不是評論。然而,爲了供你參考,這個迴應是一個評論。 – SenorAmor 2012-04-07 19:58:08

2

如果你正在做簡單的文本匹配,並且不希望使用正則表達式引擎的開銷,strpos功能可能是你在找什麼。 有關更多詳細信息,請參閱PHP手冊頁面strpos

if(strpos($string,"Canada")!==FALSE){ 
    // Do stuff for Canada 
} 

使用該strpos()功能優於strstr()由於manual指出爲實例,程序員只關心找到匹配,而不是其中匹配的位置,strpos()是更快和更存儲器密集型的。