我需要一个正则表达式来识别两个选项,它们是'F'和'M'字符。我在尝试:
preg_replace('/([^FM]){1}/', '', $_GET['option'])
但如果我输入'MF'则返回'MF',但我期待'M'。
有人能帮助我吗?
答案 0 :(得分:1)
$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 ...
答案 1 :(得分:0)
总是可以试试这个。这是一个班轮,将抓住字符串的第一个字符。如果是'm'或'M',它将返回'M'。女性也一样。如果没有匹配则会返回''。
$gender = strtolower(substr($_GET['option'], 0, 1)) == 'f' ? 'F' : (strtolower(substr($_GET['option'], 0, 1)) == 'm' ? 'M' : '');