Я бы не стал использовать preg_replace с пустой строкой для «опасных символов», так как это заставит пользователя поверить, что он изменил пароль на что-то, но вы исполняете что-то еще .. Таким образом, пользователь установит пароль на что-то другое, чем он вставьте ... Было бы лучше дать отзыв пользователю, сообщив ему, что некоторые символы (желательно, чтобы захватывать и отображать оскорбительные символы) не проходили проверку.
Кроме этого, я думаю, что это выглядит довольно хорошо. Я думаю, что он предоставляет пользователю широкий спектр возможных символов, и ему не нужно больше, чем те, которые создают безопасный пароль. Также может быть полезно сообщить пользователю, какие символы разрешены в пароле, чтобы ему не приходилось угадывать.