使用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()函数。