Wie bereinige ich eine Zeichenfolge, die als Dateiname in PERL verwendet werden soll?

8

Ich habe ein Bewerbungsformular, wo die Leute ihren Namen und ihre Kontaktinformationen eintragen und einen Lebenslauf anhängen.

Die Kontaktinformationen werden per E-Mail gesendet und der Lebenslauf wird angehängt.

Ich möchte den Namen der Datei dahingehend ändern, dass es eine Kombination aus der Wettbewerbsnummer und ihrem Namen ist.

Wie kann ich meinen generierten Dateinamen bereinigen, damit ich garantieren kann, dass er keine ungültigen Zeichen enthält? Bisher kann ich alle Leerzeichen und Kleinbuchstaben entfernen.

Ich möchte alle Interpunktionszeichen (wie Apostrophe) und nicht alphabetische Zeichen (wie Akzente) entfernen.

Wenn beispielsweise "André O'Hara" seinen Lebenslauf für den Job 555 mit diesem Formular eingereicht hat, würde ich mich freuen, wenn alle fragwürdigen Zeichen entfernt würden und ich einen Dateinamen wie folgt erhalten hätte:

%Vor%

Mit welcher Regex kann ich alle nicht alphabetischen Zeichen entfernen?

Hier ist mein Code so weit:

%Vor%     
jeph perro 18.08.2010, 19:06
quelle

1 Antwort

12

Wenn Sie versuchen, Zeichen "aufzulisten", sollte Ihre grundlegende Herangehensweise darin bestehen, ein Zeichenklassenkomplement zu verwenden:

[...] definiert eine Zeichenklasse in Perl-Regexes, die mit allen darin definierten Zeichen übereinstimmt (einschließlich Bereichen wie a-z ). Wenn Sie ein ^ hinzufügen, wird es zu einem Komplement, sodass es mit allen Zeichen übereinstimmt, die in den Klammern nicht definiert sind.

%Vor%

Damit wird alles entfernt, was nicht ein lateinischer Buchstabe ohne Akzent ist, eine Zahl, ein Bindestrich oder ein Punkt. Fügen Sie Zeichen in [^...] hinzu, um sie zu Ihrer Whitelist hinzuzufügen.

    
Bounderby 18.08.2010, 19:13
quelle

Tags und Links