我需要让SQL查询只有两个词: male 或 female
我使用返回的PHP函数:
return preg_replace( "/([male|female])/i", '', $data );
目前它删除了这些单词,但我如何删除绝对所有内容并且只允许 是男性或女性?
我在这里缺少什么?
答案 0 :(得分:5)
您的原始模式将与任何m
,a
,l
,e
,|
或f
字符匹配。
你可能想要这样的东西:
if (preg_match('/(fe)?male/i', $data, $match))
return $match[0];
else
return "";
或者在单行中:
return preg_match('/(fe)?male/i', $data, $match) ? $match[0] : "";
这将匹配文字字符串male
(前面是可选的文字字符串fe
)并返回第一个匹配的结果。如果没有找到这样的匹配,它将返回一个空字符串。
答案 1 :(得分:3)
要做你正在描述的事情,你可以使用它:
$str = preg_replace('/.*?((?:fe)?male).*/i', '$1', $str);
这会删除所有内容,并将female
或male
放回字符串中。