'F' と 'M' 文字の 2 つのオプションのみを認識する正規表現が必要です。やっています:
preg_replace('/([^FM]){1}/', '', $_GET['option'])
しかし、「MF」と入力すると「MF」が返されますが、「M」が必要です。
誰でも私を助けることができますか?
'F' と 'M' 文字の 2 つのオプションのみを認識する正規表現が必要です。やっています:
preg_replace('/([^FM]){1}/', '', $_GET['option'])
しかし、「MF」と入力すると「MF」が返されますが、「M」が必要です。
誰でも私を助けることができますか?
$output = preg_replace('/^[^FM]*([FM])?.*/s', '$1', $_GET['option']);
文字列の先頭から開始します。FM
すべての非文字を消費します。F
次に、1 つまたはM
文字 (存在する場合) に一致します。残りの入力を一致させます。一致した文字に置き換えます。M
何もない場合、またはまったくない場合は、空の文字列になることに注意してくださいF
。
ただし、ブール値のように見えるため、そのデータを取得する方法を再考する必要があります (ただし、目的の文字を含む可能性のある任意の文字列を処理します)。
"M"
自分で (他の Web サイトから) 値を生成した場合、改ざんされていない値は または のいずれかであることがわかるはずです"F"
。それでは、次のようにしないでください:
if ($_GET['option'] == "M")
// male...
elseif ($_GET['option'] == "F")
// female...
else
// someone tried to mess with you ...
いつでもこれを試すことができます。これはワンライナーで、文字列の最初の文字を取得します。「m」または「M」の場合、「M」が返されます。そして女性も同じです。一致するものがない場合は、'' が返されます。
$gender = strtolower(substr($_GET['option'], 0, 1)) == 'f' ? 'F' : (strtolower(substr($_GET['option'], 0, 1)) == 'm' ? 'M' : '');