从字符串中删除所有特殊字符以使其成为有效的电子邮件(但保留 äöüß)

remove all special characters from string to make it a valid email (but keep äöüß)

所以我试图从字符串中删除所有空格、换行符、制表符、特殊字符以使其成为可行的电子邮件地址,但我不能将 var_filterFILTER_SANITIZE_EMAIL 一起使用,因为它会删除 ä,ö,ü,ß。

目前有解决方法,但它看起来真的很愚蠢,我相信有更好的方法来做到这一点!

if(strpos($string, '\'')) {
    $string = str_replace('\'', '', $string);
}
if(strpos($string, '"')) {
     $string = str_replace('""', '', $string);
}
if(strpos($string, '/')) {
   $string = str_replace('/', '', $string);
}

我也试过 preg_replace 但我找不到任何关于如何正确格式化的列表。

$$string = preg_replace('/\s+/,\',",/', '', $string);

应该可以转换这封邮件:

peters.müller        @      email.  /
com'"

进入: peters.müller@email.com

找到答案:

这会保留所有字符 (äöüß),并且不会删除电子邮件中使用的“. ; @ _”。 需要分号作为字符串中多封电子邮件的分隔符。

$string = preg_replace('/[^\p{L}0-9\-.;@_]/u', '', $string);