有没有一种简单的方法可以检查某个值是否在字符串中?
$string = ' 123,456,789,abc789,def'
if ($string has '789') {
// code
}
我只想要完全匹配(所以只有789,而不是abc789)
我现在能想到的唯一方法是使用逗号将字符串分解为数组,然后检查每个值是否匹配。有更好/更有效的方式吗?
答案 0 :(得分:6)
如果您使用' 123,456,789,12789,abc,def'
,则使用strpos将无效,请改为使用preg_match:
$string = ' 123,456,789,abc789,def';
$what_to_find = '789';
if (preg_match('/\b' . $what_to_find . '\b/', $string)) {
// code
}
答案 1 :(得分:3)
你可以将它爆炸并检查它是否在数组中
function stringContains($string, $needle)
{
$arr = explode(',',$string);
if(in_array($needle,$arr))
return true;
return false;
}
除了stpos建议外,如果你在字符串123,456中寻找12,strpos将返回一个位置,这将不会返回
答案 2 :(得分:1)
您可以使用strpos()
功能。如果在搜索字符串中找不到针,它将返回FALSE
:
if (strpos($string, '789') !== FALSE) {
// code...
}
如果您想要完全匹配,那么我会使用explode()
:
$parts = explode(',', trim($string));
if (in_array('789', $parts)) {
// code...
}
答案 3 :(得分:0)
使用strpos()
功能。
$string = ' 123,456,789,abc,def'
if (strpos($string,'789') !== FALSE) {
// code
}
答案 4 :(得分:0)
您可以使用strpos
函数来查找其他
$string = ' 123,456,789,abc,def';
if (strpos($string,'789') !== false) {
echo 'true';
}
请参阅Manual
答案 5 :(得分:0)
@ Bryan代码的缩短版本:
function stringContains($string, $needle) {
return in_array($needle, explode(',', $string));
}