检查值是否在字符串中,其值由逗号分隔?

时间:2013-10-02 13:55:51

标签: php

有没有一种简单的方法可以检查某个值是否在字符串中?

$string = ' 123,456,789,abc789,def'
if ($string has '789') { 
   // code
}

我只想要完全匹配(所以只有789,而不是abc789)

我现在能想到的唯一方法是使用逗号将字符串分解为数组,然后检查每个值是否匹配。有更好/更有效的方式吗?

6 个答案:

答案 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
}

Demo

答案 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...
}

Demo!


如果您想要完全匹配,那么我会使用explode()

$parts = explode(',', trim($string));
if (in_array('789', $parts)) {
    // code...
}

Demo!

答案 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));
}