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

时间:2019-10-07 07:39:03

标签: php email preg-replace

因此,我试图从字符串中删除所有空格,换行,制表符和特殊字符,以使其成为可行的电子邮件地址,但是我不能将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

1 个答案:

答案 0 :(得分:-1)

找到了答案:

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

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