удалите все специальные символы из строки, чтобы сделать ее действительным адресом электронной почты (но оставьте комментарий) - PullRequest
0 голосов
/ 07 октября 2019

Так что я пытаюсь удалить все пустые места, новые строки, табуляции, специальные символы из строки, чтобы сделать его жизнеспособным Email-адресом, но я не могу использовать 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

1 Ответ

0 голосов
/ 07 октября 2019

нашел ответ:

это сохраняет все аценты (äöüß) и не удаляет ".; @ _", Которые используются в электронных письмах. Нужна точка с запятой в качестве разделителя для нескольких писем в строке.

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