Just a hint I tested,
You can obtain all the chars <32 (so newline and c.return), by using not operator > !FILTER_FLAG_STRIP_LOW as the last argument.
Example:
filter_input(INPUT_GET,'test',FILTER_SANITIZE_STRING,!FILTER_FLAG_STRIP_LOW);
The filter keeps working as before removing anything else as before apart from FILTER_FLAG_STRIP_LOW.
Just filter those "bad" chars <32 manually you don't want.
Filtres de nettoyage
| ID | Nom | Options | Flags | Description |
|---|---|---|---|---|
FILTER_SANITIZE_EMAIL |
"email" | Supprime tous les caractères sauf les lettres, chiffres, et !#$%&'*+-/=?^_`{|}~@.[]. | ||
FILTER_SANITIZE_ENCODED |
"encoded" |
FILTER_FLAG_STRIP_LOW,
FILTER_FLAG_STRIP_HIGH,
FILTER_FLAG_ENCODE_LOW,
FILTER_FLAG_ENCODE_HIGH
|
Applique l'encodage URL, et supprime ou encode les caractères spéciaux. | |
FILTER_SANITIZE_MAGIC_QUOTES |
"magic_quotes" | Applique addslashes(). | ||
FILTER_SANITIZE_NUMBER_FLOAT |
"number_float" |
FILTER_FLAG_ALLOW_FRACTION,
FILTER_FLAG_ALLOW_THOUSAND,
FILTER_FLAG_ALLOW_SCIENTIFIC
|
Supprime tous les caractères, sauf les chiffres, +- et éventuellement .,eE. | |
FILTER_SANITIZE_NUMBER_INT |
"number_int" | Supprime tous les caractères sauf les chiffres, et les signes plus et moins. | ||
FILTER_SANITIZE_SPECIAL_CHARS |
"special_chars" |
FILTER_FLAG_STRIP_LOW,
FILTER_FLAG_STRIP_HIGH,
FILTER_FLAG_ENCODE_HIGH
|
Transforme en entité HTML les caractères '"<>& et les caractères ASCII de valeur inférieur à 32, et supprime ou encode les autres caractères spéciaux. | |
FILTER_SANITIZE_FULL_SPECIAL_CHARS |
"full_special_chars" |
FILTER_FLAG_NO_ENCODE_QUOTES,
|
Équivaut à appeler la fonction htmlspecialchars() avec
le jeu ENT_QUOTES. L'encodage des guillemets
peut être désactivé en utilisant la constante FILTER_FLAG_NO_ENCODE_QUOTES.
Comme la fonction htmlspecialchars(), ce filtre tient compte du
default_charset et si une séquence d'octets est détectée
contenant un caractère invalide dans le jeu de caractères courant, alors la chaîne entière
sera rejetée et une chaîne vide sera retournée.
|
|
FILTER_SANITIZE_STRING |
"string" |
FILTER_FLAG_NO_ENCODE_QUOTES,
FILTER_FLAG_STRIP_LOW,
FILTER_FLAG_STRIP_HIGH,
FILTER_FLAG_ENCODE_LOW,
FILTER_FLAG_ENCODE_HIGH,
FILTER_FLAG_ENCODE_AMP
|
Supprime les balises, et supprime ou encode les caractères spéciaux. | |
FILTER_SANITIZE_STRIPPED |
"stripped" | Alias du filtre "string". | ||
FILTER_SANITIZE_URL |
"url" | Supprime tous les caractères sauf les lettres, chiffres et $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=. | ||
FILTER_UNSAFE_RAW |
"unsafe_raw" |
FILTER_FLAG_STRIP_LOW,
FILTER_FLAG_STRIP_HIGH,
FILTER_FLAG_ENCODE_LOW,
FILTER_FLAG_ENCODE_HIGH,
FILTER_FLAG_ENCODE_AMP
|
Ne fait rien, supprime ou encode les caractères spéciaux. |
Avertissement
Lorsque vous utilisez ces filtres comme filtres par défaut, le drapeau par
défaut est réglé sur FILTER_FLAG_NO_ENCODE_QUOTES. Vous devez
mettre filter.default_flags à 0 explicitement pour que les quotes soient encodées
par défaut. Comme ceci:
Exemple #1 Configurer le filtre par défaut pour agir comme htmlspecialchars
filter.default = full_special_chars
filter.default_flags = 0
scamber256 at hotmail dot de
06-Aug-2011 08:37
Dmitry Snytkine
10-Apr-2011 10:17
Beware that FILTER_FLAG_STRIP_LOW strips NEWLINE and TAG and CARRIAGE RETURN chars. If you have a form that accepts user input in plaintext format, all the submitted text will lose all the line breaks, making it appear all on one line. This basically renders this filter useless for parsing user-submitted text, even in plain text.
marcus at synchromedia dot co dot uk
26-Nov-2009 06:07
It's not entirely clear what the LOW and HIGH ranges are. LOW is characters below 32, HIGH is those above 127, i.e. outside the ASCII range.
<?php
$a = "\tcafé\n";
//This will remove the tab and the line break
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
//This will remove the é.
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
?>
