Вы должны разрешить что-либо для имен. Рассмотрим «О'Мэлли» или «Хадсон-Уокер». Некоторые языки (например, Salish) включают числа, поэтому вы можете иметь «Sqwxwu7mish». Затем есть акцентированные символы: иврит, кириллица, греческий, китайский, корейский и даже музыкант, ранее известный как принц.
Текст сообщения должен быть аналогичным образом без ограничений. Если сообщения могут содержать HTML, вам придется анализировать HTML (с помощью реального анализатора HTML) и применять белые списки тегов и атрибутов, чтобы пропустить только то, что вы ожидаете.
Номера телефонов также должны быть близки к свободной форме. Североамериканские форматы отличаются от европейских, некоторые люди любят говорить «(555) 555-5555», а другие любят «555-555-5555», некоторые телефонные номера имеют добавочные номера, а некоторые - нет.
Единственная кодировка, о которой вам следует беспокоиться при вводе, это то, что все находится в UTF-8 (включая вашу базу данных). И, когда вы разговариваете с вашей базой данных, не пытайтесь ничего кодировать самостоятельно, используйте механизм цитирования драйвера базы данных и заполнители.
Длина обычно должна быть намного больше, чем вы думаете, что она должна удваивать (по крайней мере) вашу первую догадку на разумном максимуме. Разница в памяти между 20 символами для имени и 100 не будет важной для большинства приложений, поэтому будьте щедрыми.
Вам не нужно беспокоиться о кодировке HTML до вывода, а затем вы должны использовать любые инструменты кодирования HTML и URL, которые поддерживает ваша среда, не пытайтесь создавать свои собственные.
Не чрезмерно ограничивайте свои входные данные, будьте максимально свободными и прощающими. Будьте очень строги с вашими выводами.