2012-04-07 76 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()是更快和更存储器密集型的。