对于一个项目,我有一个输入,它由数字和字母组成,以特定的顺序,从另一个网页发送。例如,7个数字表示ID,一个数字后面跟着2个字母表示组,1、2或3个数字表示房间号。为了分离它们,我认为我必须遍历整个字符串,看看每个字符是数字还是字母,然后使用很多if/then函数来获得正确的类型。有没有更好的方法来做这件事,或者这是一个很好的方法。
使用正则表达式应该是最好的解决方案,因为它既可以告诉您ID是否与所需的语法匹配,又可以在数组中获得该ID的几个部分。
对于你给出的例子:
$idList = [
'1AB12', // OK
'1AB123', // OK
'1AB1234', // KO
'AB1234', //KO
'12AB12', //KO
];
foreach ($idList as $id) {
$isOk = preg_match('/^([0-9])([a-zA-Z]{2})([0-9]{1,3})$/', $id, $match);
if ($isOk) {
echo 'OK : ' . $id;
var_dump($match);
} else {
echo 'KO : ' . $id;
}
}