如何在Php中检查字符串是否包含精确的子字符串
我正在尝试检查字符串中是否存在表示如何在Php中检查字符串是否包含精确的子字符串,php,strpos,Php,Strpos,我正在尝试检查字符串中是否存在表示1的数字,例如11,12,13为此,我使用strpos: <? $s = "2,3,11,12,13"; $ss = "1"; if(strpos($s, $ss)) echo "success"; else echo "fail"; ?> 此代码给出输出fail,但它应该给出true 编辑2:检查答案 问题已经解决,但由于每个循环的输出重复次数与数组中的值相同。我们如何让输出重复输出?您可以这样做: <?php $s = "2,3,11,
1
的数字,例如11,12,13
为此,我使用strpos
:
<?
$s = "2,3,11,12,13";
$ss = "1";
if(strpos($s, $ss)) echo "success";
else echo "fail";
?>
此代码给出输出fail
,但它应该给出true
编辑2:检查答案
问题已经解决,但由于每个循环的输出重复次数与数组中的值相同。我们如何让输出重复输出?您可以这样做:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$toTest = explode(",", $s);
if(in_array("$ss", $toTest)) {
echo "success";
}
else {
echo "fail";
}
?>
如果您在考虑此代码时有任何问题,请随时提问。(经过代码测试,效果良好)您可以这样做:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$toTest = explode(",", $s);
if(in_array("$ss", $toTest)) {
echo "success";
}
else {
echo "fail";
}
?>
如果您在考虑此代码时有任何问题,请随时提问。(经过代码测试,效果良好)尝试以下方法:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$haystack = explode(",",$s);
$matches = preg_grep ("/$ss/", $haystack);
echo !empty($matches) ? "success" : "fail";
试试这个:
<?php
$s = "2,3,11,12,13";
$ss = "1";
$haystack = explode(",",$s);
$matches = preg_grep ("/$ss/", $haystack);
echo !empty($matches) ? "success" : "fail";
您可以通过在变量
后添加逗号
来检查开始时的出现情况,在变量之前添加逗号
以检查最后一次
的出现情况,或在变量之前和之后添加逗号
以检查中间
的出现情况
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";
}
您可以通过在变量
后添加逗号
检查开始时的出现情况,在变量
前添加逗号
检查最后一次
时的出现情况,或者在变量
前后添加逗号
检查中间时的出现情况
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";
}
通过添加一个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";
}
}
?>
通过添加一个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";
}
}
?>
是“1,2,3,4,5”
会用1
返回成功吗?请注意:strpos
可能会返回int(0),所以最好使用===
比较如果(strpos($s,$ss)!==false)
编辑2:到目前为止您尝试了什么?解决这个问题真的很容易,因为你只得到一次输出,我随时准备帮助你,但是如果你不努力解决这个问题,我不会给你解决方案。是不是“1,2,3,4,5”
将返回成功的1
?注意:strpos
可能返回int(0)因此,最好使用==
将if(strpos($s,$ss)!==false)
与您的编辑进行比较2:到目前为止,您尝试了什么?解决这个问题真的很容易,因为你只得到一次输出,我随时准备帮助你,但是如果你不努力解决这个问题,我不会给你解决方案。@eviletech,$ss
中的最大数字数是多少?2,甚至更多?它可以更多,但始终小于或等于$s
@eviletech$ss
中的最大数字计数是多少?2,甚至更多?它可以更多,但始终小于或等于$s