从字符串中删除所有特殊字符以使其成为有效的电子邮件(但保留 äöüß)
remove all special characters from string to make it a valid email (but keep äöüß)
所以我试图从字符串中删除所有空格、换行符、制表符、特殊字符以使其成为可行的电子邮件地址,但我不能将 var_filter
与 FILTER_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);
所以我试图从字符串中删除所有空格、换行符、制表符、特殊字符以使其成为可行的电子邮件地址,但我不能将 var_filter
与 FILTER_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);