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');