4

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

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

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

目前我能想到的唯一方法是使用逗号分解字符串以将其转换为数组,然后检查每个值是否匹配。有没有更好/更有效的方法?

4

6 回答 6

7

例如,如果您有,则使用 strpos 将不起作用,请' 123,456,789,12789,abc,def'改用preg_match

$string = ' 123,456,789,abc789,def';
$what_to_find = '789';
if (preg_match('/\b' . $what_to_find . '\b/', $string)) { 
   // code
}

演示

于 2013-10-02T14:01:28.923 回答
3

你可以爆炸它并检查它是否在数组中

function stringContains($string, $needle)
{
    $arr = explode(',',$string);
    if(in_array($needle,$arr))
        return true;

    return false;
}

除了 stpos 建议之外,如果您在字符串 123,456 中查找 12 ,这将不会返回 true,其中 strpos 将返回一个位置

于 2013-10-02T13:59:33.593 回答
1

你可以使用strpos()函数。FALSE如果在搜索字符串中找不到针头,它将返回:

if (strpos($string, '789') !== FALSE) {
    // code...
}

演示!


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

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

演示!

于 2013-10-02T13:57:07.370 回答
0

您可以使用strpos用于查找一个字符串在另一个字符串中出现的函数

  $string = ' 123,456,789,abc,def';

 if (strpos($string,'789') !== false) {
        echo 'true';
    }

手册

于 2013-10-02T13:57:42.110 回答
0

@Bryan 代码的较短版本:

function stringContains($string, $needle) {
    return in_array($needle, explode(',', $string));
}
于 2013-10-02T16:18:15.753 回答
0

使用该strpos()功能。

$string = ' 123,456,789,abc,def'
if (strpos($string,'789') !== FALSE) { 
   // code
}
于 2013-10-02T13:57:16.123 回答