我正在尝试编写一个函数来过滤从输入到只有字母和符号“-”的所有内容。我想要那个符号,因为输入包含名称,有人可能叫 Jean-Paul,这是我当前的代码:
if(!preg_match('/^\[a-zA-Z]+$/',$string)) {
// Containing something other than a-z and A-Z
}
$string = 'Jean-Paul';
现在给出该字符串包含非法字符,但我该怎么做才能接受 " -
" ?
if (!preg_match('/^[A-Z-]+$/i', $string)) {
// Contains something other than A-Z (case-insensitive) or -
}
如果 A-
是字符类中的第一个或最后一个字符,则它被视为字符类中的文字破折号。
请注意,"Jean-Rémy"
仍然会失败。您确定要将自己限制为 ASCII 字母吗?
如果“过滤器”是指删除不需要的字符,则使用
$s = preg_replace("/[^a-z-]/i", "", $s);
或者
$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s));