Domanda

Sto cercando di ripulire l'input del modulo usando la seguente traslitterazione Perl:

sub ValidateInput {
 my $input = shift;
 $input =~ tr/a-zA-Z0-9_@.:;',#$%&()\/\\{}[]?! -//cd;
 return $input;
}

Il problema è che questa traslitterazione sta rimuovendo i caratteri di nuova riga incorporati che gli utenti possono inserire in un campo textarea che voglio mantenere come parte della stringa. Qualche idea su come posso aggiornarlo per impedire che rimuova i caratteri di nuova riga incorporati? Grazie in anticipo per il tuo aiuto!

È stato utile?

Soluzione 4

Grazie per l'aiuto ragazzi! Alla fine ho deciso di elaborare tutti i dati nel nostro database per rimuovere il carattere che stava causando il problema in modo che qualsiasi testo inviato tramite il nostro modulo di aggiornamento (e non modificato dall'utente) corrispondesse a ciò che era nel database. Per i tuoi suggerimenti, ho anche aggiunto alcuni caratteri aggiuntivi consentiti alla regex di validazione.

Altri suggerimenti

Non sono sicuro di quello che stai facendo, ma sospetto che tu stia cercando di mantenere tutti i caratteri tra lo spazio e la tilde nella tabella ASCII, insieme ad alcuni dei caratteri degli spazi bianchi. Penso che la maggior parte della tua lista si conduca a un singolo intervallo \ x20- \ x7e :

$string =~ tr/\x0a\x0d\x20-\x7e//cd;

Se vuoi eliminare un personaggio come " (anche se sospetto che tu lo voglia davvero dal momento che consenti la singola citazione), regola il tuo intervallo:

$string =~ tr/\x0a\x0d\x20-\xa7\xa9-\x7e//cd;

È un po 'un modo bizantino di farlo! Se aggiungi \ 012 dovrebbe mantenere le nuove righe.

$input =~ tr/a-zA-Z0-9_@.:;',#$%&()\/\{}[]?! \012-//cd;

Vedi Tipi di contenuto del modulo .

  

application/x-www-form-urlencoded : le interruzioni di riga sono rappresentate come " CR LF " coppie (ovvero % 0D% 0A ).

     

...

     

multipart/form-data : come per tutte le trasmissioni MIME, " CR LF " (ovvero % 0D% 0A ) viene utilizzato per separare le linee di dati.

Non so cosa hai nel database. Ora sai quale sceneggiatura vede.

Stai usando CGI.pm , giusto?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top