本当に最初にregexを使うべきではないという問題はありません...代わりに、各間隔の下限と上限の境界と単純な文字列比較を使用してください。
function check_name_in_range($name) {
$ranges = [
1 => ['X', 'Y'],
2 => ['Ki', 'Kj'],
3 => ['Al', 'Bkz'],
];
foreach($ranges as $rangeNum => $range) {
if(substr($name, 0, strlen($range[0])) >= $range[0] &&
substr($name, 0, strlen($range[1])) <= $range[1]) {
return $name. ' falls into range ' . $rangeNum;
}
}
return $name. ' does not fall into any range';
}
var_dump(
check_name_in_range('Albert'),
check_name_in_range('Kjooto'),
check_name_in_range('FitsEffAll')
);
あなたはそれらが等しいではないので、問題になっていませんA
/a
ように、比較の前に、関連するすべての文字列を小文字にワンかもしれません。
本当に正規表現の問題ではありません...代わりに、各間隔の下限と上限の境界と単純な文字列比較を使用する必要があります。 – CBroe
しかし、定義されたパラメータの間にある範囲とはどのように比較できますか?たとえば、「Ab-De」などです。どのように私は "Co"で始まる私のラストネームを比較できますか? – h00ligan
あなたが正確に何を必要としているか詳しく調べることができますか?2文字で始まり2文字で終わるすべての姓をフィルタリングする必要がありますか?質問は – msoliman