使用PHP检查是否所有子字符串都包含在字符串中

使用PHP检查是否所有子字符串都包含在字符串中,php,regex,Php,Regex,假设我有两组字符串要检查 $string = 12345; $string2 = 15000; //string must contain 1,2,3,4,5 to be returned true if(preg_match('[1-5]',$string) { return true; } else { return false;} 此代码适用于$string,但不适用于$string2。它使用$string2返回true。 请帮忙 如果字符串必须包含1、2、3、4和5

假设我有两组字符串要检查

$string = 12345;
$string2 = 15000;

//string must contain 1,2,3,4,5 to be returned true

if(preg_match('[1-5]',$string) {
    return true;
} else {
    return false;}
此代码适用于$string,但不适用于$string2。它使用$string2返回true。
请帮忙

如果字符串必须包含
1
2
3
4
5
,则应使用regex模式

/^(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5).*/
/^(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5)[1-5]*$/
这可以进一步优化。。。例如:

/^(?=.*1)(?=.*2)(?=.*3)(?=.*4).*5/

如果不允许使用其他字符,则应使用正则表达式模式

/^(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5).*/
/^(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5)[1-5]*$/

您也可以通过
strpos
检查这一点:

<?php
    function str_contains_all($string, $searchValues, $caseSensitive = false) {
        if (!is_array($searchValues)) {
            $searchValues = (string)$searchValues;
            $searchValuesNew = array();
            for ($i = 0; $i < strlen($searchValues); $i++) {
                $searchValuesNew[] = $searchValues[$i];
            }
            $searchValues = $searchValuesNew;
        }

        $searchFunction = ($caseSensitive ? 'strpos' : 'stripos');

        foreach ($searchValues as $searchValue) {
            if ($searchFunction($string, (string)$searchValue) === false) {
                return false;
            }
        }

        return true;
    }
?>

使用:


哪些产出:

伊恩


-但是您应该将正则表达式定义为
/([1-5]+)/
。例如,您的字符串是否可以包含12345以外的内容,例如
215438
12345K
…@casimirithippolyte-Ermm,否!我只想要1,2,3,4,5。如果你只想检查数字,你可以使用is_numeric()函数。