1

'F' と 'M' 文字の 2 つのオプションのみを認識する正規表現が必要です。やっています:

preg_replace('/([^FM]){1}/', '', $_GET['option'])

しかし、「MF」と入力すると「MF」が返されますが、「M」が必要です。

誰でも私を助けることができますか?

4

2 に答える 2

1
$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 ...
于 2012-12-07T19:01:10.150 に答える
0

いつでもこれを試すことができます。これはワンライナーで、文字列の最初の文字を取得します。「m」または「M」の場合、「M」が返されます。そして女性も同じです。一致するものがない場合は、'' が返されます。

$gender = strtolower(substr($_GET['option'], 0, 1)) == 'f' ? 'F' : (strtolower(substr($_GET['option'], 0, 1)) == 'm' ? 'M' : '');

于 2012-12-07T19:31:48.353 に答える