我需要一个正则表达式来识别只有两个选项,它们是“F”和“M”字符。我在尝试:
preg_replace('/([^FM]){1}/', '', $_GET['option'])
但是如果我输入'MF',它会返回'MF',但我期待'M'。
有谁能够帮助我?
我需要一个正则表达式来识别只有两个选项,它们是“F”和“M”字符。我在尝试:
preg_replace('/([^FM]){1}/', '', $_GET['option'])
但是如果我输入'MF',它会返回'MF',但我期待'M'。
有谁能够帮助我?
$output = preg_replace('/^[^FM]*([FM])?.*/s', '$1', $_GET['option']);
从字符串的开头开始。消耗所有非FM
字符。然后匹配一个F
或M
字符(如果有的话)。匹配输入的其余部分。替换为匹配的字符。M
请注意,如果没有或根本没有,您最终会得到一个空字符串F
。
但是,您可能应该重新考虑如何获取该数据,因为它似乎是一个布尔值(但您需要处理可能包含所需字符的任意字符串)。
如果您自己(从其他网站)生成值,您应该能够知道未被篡改的值是"M"
或"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' : '');