Php 在用逗号分隔的字符串中搜索精确数字

Php 在用逗号分隔的字符串中搜索精确数字,php,Php,我有两条线: 有数字的一个: $a = "348, 23, 16"; 另一个数字可以是任何其他数字 $b = "348"; 如何搜索$a是否正好包含$b,而不包含任何其他内容(即348应返回true,而34应返回false)?您需要将CSV解析为CSV,然后可以使用数组中的检查值 $a = "348, 23, 16"; $ints = str_getcsv($a); $b = "349"; if(in_array($b, $ints)) { echo 'its there'; } e

我有两条线: 有数字的一个:

$a = "348, 23, 16";
另一个数字可以是任何其他数字

$b = "348";

如何搜索
$a
是否正好包含
$b
,而不包含任何其他内容(即
348
应返回true,而
34
应返回false)?

您需要将CSV解析为CSV,然后可以使用数组中的
检查值

$a = "348, 23, 16";
$ints = str_getcsv($a);
$b = "349";
if(in_array($b, $ints)) {
    echo 'its there';
} else {
    echo 'its not there';
}
例如:

$a = "348, 23, 16";
$ints = str_getcsv($a);
$b = "348";
if(in_array($b, $ints)) {
    echo 'its there';
} else {
    echo 'its not there';
}
strpos
将只检查整数的一部分是否在字符串中,例如将找到
3489

尝试使用explode()和in_array()


您可以通过逗号(,)将字符串分解,然后通过数组中的
检查项目是否存在

$a = "348, 23, 16";
$b = "348";
$c = "34";

$arr = array_map(function($v) {
  return trim($v);
}, explode(',', $a));

function isContains($item, $array)
{
   return in_array($item, $array);
}

var_dump(isContains($b, $arr)); // True
var_dump(isContains($c, $arr)); // False
将php方法与以下方法一起使用:

$numberexists = in_array($b, explode(', ', $a));
这将字符串转换为一个数组,由
分隔,然后使用in_array()在该数组中搜索相应的值

您可以使用
str_pos()
,但首先需要做一些调整。删除空格只是为了简化操作(
str_replace()
),然后在原始字符串和要匹配的字符串的开头和结尾都添加逗号

这意味着您要在
,348,23,26,
中查找
,348,

$a = "348, 23, 16";
$b = "348";

$found = strpos(",".str_replace(" ", "", $a).",", ",".$b.",") !== false;

这样就不必将其转换为数组,然后搜索数组。

您还可以使用数字和正则词边界执行简单的preg_match()

 preg_match('/\b348\b/','348, 12, 47');

演示:

可能必须使用regexp和单词边界;到目前为止,您尝试过什么?我尝试过使用strpos($a,$b),但它似乎不起作用。您有很多问题尚未解决,可能值得仔细检查并标记为已回答(如果适用)-
 preg_match('/\b348\b/','348, 12, 47');