我正在尝试检查字符串中是否显示1
的数字11,12,13
要执行此操作我使用的是strpos
:
<?
$s = "2,3,11,12,13";
$ss = "1";
if(strpos($s, $ss)) echo "success";
else echo "fail";
?>
我希望代码能够将fail
作为输出,但它会提供success
。
是否有任何函数可用于精确匹配字符串中的数字。我想要字符串中的数字1
,而不是1
等包含11,123,100
的数字等。
编辑1:它适用于@Twinfriends答案,但问题在于使用多个数字。
<?
$s = "2,3,11,12,13";
$ss = "1,2";
if(strpos($s, $ss)) echo "success";
else echo "fail";
?>
此代码提供输出fail
,但它应该为真。
修改2:检查回答https://stackoverflow.com/a/48297002/8490014
问题已经解决,但由于每个循环的输出重复次数与数组中的值一样多。我们怎样才能让输出重复输出?
答案 0 :(得分:1)
你可以这样做:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$toTest = explode(",", $s);
if(in_array("$ss", $toTest)) {
echo "success";
}
else {
echo "fail";
}
?>
如果您对此代码有任何疑问,请随时提出。 (代码测试,效果很好)
答案 1 :(得分:1)
通过添加foreach
循环来解决问题:
<?
$s = "2,3,11,12,13";
$ss = "1,2,3,5";
$catid = explode(",", $s);
$ocat = explode(",",$ss);
foreach($ocat as $abc) {
if(in_array($abc, $catid)) {
echo "success";
}
else {
echo "fail";
}
}
?>
答案 2 :(得分:0)
试试这个:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$haystack = explode(",",$s);
$matches = preg_grep ("/$ss/", $haystack);
echo !empty($matches) ? "success" : "fail";
答案 3 :(得分:0)
您可以在appending comma
后variable
检查start
appending comma
,variable
之前检查last
处的appending comma
或variable
之前和之后middle
检查if((substr($s, 0, (strlen($ss)+1)) === $ss.',')||(substr($s, (strlen($s)-strlen($ss)-1), strlen($s)) === ','.$ss)||(strpos($s, ','.$ss.','))){
echo "success";
}
else{
echo "fail";
}
处的发生情况。
gunicorn -b 0.0.0.0:8080 main:app --reload