我有一个以逗号分隔的列表,在该列表中,我有兴趣知道是否存在以某种方式启动的特定字符串。
$accounting = 'acc';
$str = 'loan,k,hi,588888,acc';
if (strpos($str, $accounting) === TRUE)
{
echo 'that contained accounting';
}
else{
echo 'nothing was found';
}
代码没有找到任何内容。strpos
是否在逗号分隔列表中工作?。
答案 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';
}