正则表达式只允许两个词:男性或女性

时间:2013-08-27 19:24:01

标签: php regex string preg-replace

我需要让SQL查询只有两个词: male female

我使用返回的PHP函数:

return preg_replace( "/([male|female])/i", '', $data );

目前它删除了这些单词,但我如何删除绝对所有内容并且只允许 是男性女性

我在这里缺少什么?

2 个答案:

答案 0 :(得分:5)

您的原始模式将与任何male|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);

这会删除所有内容,并将femalemale放回字符串中。

codepad demo