如何检查字符串是否包含Php中的确切子字符串

时间:2018-01-17 07:27:27

标签: 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作为输出,但它会提供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

问题已经解决,但由于每个循环的输出重复次数与数组中的值一样多。我们怎样才能让输出重复输出?

4 个答案:

答案 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 commavariable检查start appending commavariable之前检查last处的appending commavariable之前和之后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