在逗号分隔列表中搜索字符串的出现

时间:2014-11-13 10:39:18

标签: php

我有一个以逗号分隔的列表,在该列表中,我有兴趣知道是否存在以某种方式启动的特定字符串。

$accounting = 'acc';
$str = 'loan,k,hi,588888,acc';

if (strpos($str, $accounting) === TRUE)
{
echo 'that contained accounting';
}
else{
echo 'nothing was found';
}

代码没有找到任何内容。strpos是否在逗号分隔列表中工作?。

3 个答案:

答案 0 :(得分:3)

  

strpos是否在逗号分隔列表中工作?。

不,它没有,因为$str不是列表,它只是一个字符串。您必须先将其转换为列表(=数组):

$lst = explode(',', $str);

然后搜索此列表:

if(in_array('acc', $lst)....

您的措辞有点不清楚,但如果您正在寻找带有特定字符串的启动的列表元素,那就更复杂了:

 function has_element_that_starts_with($lst, $prefix) {
     foreach($lst as $item)
         if(strpos($item, $prefix) === 0) // note three ='s
              return true;
     return false;
 }

另一个选项是正则表达式:

if(preg_match("~(^|,){$acc}(,|$)~", $str)....
部分字符串

if(preg_match("~(^|,){$acc}~", $str)....

答案 1 :(得分:0)

你的代码是正确的改变===到==。会工作的。

$accounting = 'acc';
$str = 'loan,k,hi,588888,acc';

if (strpos($str, $accounting) == TRUE)
{
echo 'that contained accounting';
}
else{
echo 'nothing was found';
}

答案 2 :(得分:-1)

使用php strstr()Reference

$accounting = 'acc';

$str = 'loan,k,hi,588888,acc';

if (strstr($str, $accounting) )
{
    echo 'that contained accounting';
}
else{
    echo 'nothing was found';
}