Проверьте, включена ли вся строка в строку с помощью PHP

скажем, у меня есть 2 набора строк для проверки.

$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. Он также возвращает true с $ string2. Пожалуйста помоги!

Если строка должна содержать 1 , 2 , 3 , 4 и 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; } ?> 

Использование:

 <?php $string = 12345; $string2 = 15000; if (str_contains_all($string, 12345)) { echo 'Y'; if (str_contains_all($string2, 12345)) { echo 'Y'; } else { echo 'N'; } } else { echo 'N'; } ?> 

Какие результаты:

Ю.Н.

DEMO