У меня есть форма заявления о приеме на работу, в которой люди заполняют свое имя и контактную информацию и прикрепляют резюме.
Контактная информация отправляется по электронной почте, а резюме прилагается.
Я хотел бы изменить имя файла так, чтобы оно представляло собой комбинацию номера соревнования и их имени.
Как мне очистить сгенерированное имя файла, чтобы гарантировать, что в нем нет недопустимых символов? До сих пор я могу удалить все пробелы и нижнюю строчку строки.
Я хотел бы удалить любые знаки препинания (например, апострофы) и не алфавитные символы (например, ударения).
Например, если «André O'Hara» отправив свое резюме на работу 555, используя эту форму, я был бы рад, если бы все сомнительные символы были удалены, и у меня появилось имя файла, например:
555-andr-ohara-resume.doc
Какое регулярное выражение я могу использовать, чтобы удалить все не алфавитные символы?
Вот мой код:
# Create a cleaned up version of competition number + First Name + Last Name number to name the file
my $hr_generated_filename = $cgi->param("competition") . "-" . $cgi->param("first") . "-" . $cgi->param("last");
# change to all lowercase
$hr_generated_filename = lc( $hr_generated_filename );
# remove all whitespace
$hr_generated_filename =~ s/\s+//g;
push @{ $msg->{attach} }, {
Type => 'application/octet-stream',
Filename => $hr_generated_filename.".$file-extension",
Data => $data,
Disposition => 'attachment',
Encoding => 'base64',
};
Если вы пытаетесь внести символы в «белый список», ваш основной подход должен заключаться в использовании дополнения к классу символов:
[...]
определяет класс символов в регулярных выражениях Perl, который будет соответствовать любым символам, определенным внутри (включая такие диапазоны, как a-z
). Если вы добавляете ^
, он становится дополнением, поэтому он соответствует любым символам , но не , определенным в скобках.
$hr_generated_filename =~ s/[^A-Za-z0-9\-\.]//g;
Это удалит все, кроме латинской буквы без ударения, числа, тире или точки. Чтобы добавить в белый список, просто добавьте символы внутри [^ ...]
.