Что делает FILTER_SANITIZE_STRING?
У меня вопрос по поводу функции FILTER_SANITIZE_STRING
в PHP. Я нашел множество вопросов и ответов, которые объясняют параметры, например, FILTER_FLAG_STRIP_LOW
, но меня интересует, что именно делает FILTER_SANITIZE_STRING
без каких-либо параметров? Просто удаляет теги? Спасибо!
1 ответ(ов)
Вопрос о том, что именно означает "удаление тегов" (stripping tags) и сохраняет ли это содержимое между тегами, можно проиллюстрировать на примере проверки с использованием PHP 7.1.5 и Bash. Ниже представлены результаты:
curl --data-urlencode 'my-input='\
'1. ASCII b/n 32 and 127: ABC abc 012 '\
'2. ASCII higher than 127: Çüé '\
'3. PHP tag: <?php $i = 0; ?> '\
'4. HTML tag: <script type="text/javascript">var i = 0;</script> '\
'5. Ampersand: & '\
'6. Backtick: ` '\
'7. Double quote: " '\
'8. Single quote: '"'" \
http://localhost/sanitize.php
Результаты для различных флагов фильтрации FILTER_SANITIZE_STRING
:
Без каких-либо флагов:
<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: Çüé 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick:
7. Double quote: " 8. Single quote: '`
- Вывод:
С флагом
FILTER_FLAG_NO_ENCODE_QUOTES
:<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: Çüé 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick:
7. Double quote: " 8. Single quote: '`
- Вывод:
С флагом
FILTER_FLAG_STRIP_HIGH
:<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick:
7. Double quote: " 8. Single quote: '`
- Вывод:
С флагом
FILTER_FLAG_STRIP_BACKTICK
:<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_BACKTICK);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: Çüé 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick: 7. Double quote: " 8. Single quote: '
- Вывод:
С флагом
FILTER_FLAG_ENCODE_HIGH
:<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: Çüé 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick:
7. Double quote: " 8. Single quote: '`
- Вывод:
С флагом
FILTER_FLAG_ENCODE_AMP
:<?php echo filter_input(INPUT_POST,'my-input', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_AMP);
- Вывод:
1. ASCII b/n 32 and 127: ABC abc 012 2. ASCII higher than 127: Çüé 3. PHP tag: 4. HTML tag: var i = 0; 5. Ampersand: & 6. Backtick:
7. Double quote: " 8. Single quote: '`
- Вывод:
Что касается флагов FILTER_FLAG_STRIP_LOW
и FILTER_FLAG_ENCODE_LOW
, была проведена проверка с использованием управляющего символа (bell character, ASCII 007):
- Без этих флагов символ сохраняется.
- С
FILTER_FLAG_STRIP_LOW
символ удаляется. - С
FILTER_FLAG_ENCODE_LOW
символ кодируется как
.
Таким образом, "удаление тегов" в данном контексте подразумевает не только удаление самих тегов <...>
, но и влияет на обработку символов и других элементов в строке.
Функции startsWith() и endsWith() в PHP
Как получить расширение файла в PHP?
Как читать большой файл построчно?
ReCaptcha 2.0 с использованием AJAX
Почему нельзя вызывать абстрактные функции из абстрактных классов в PHP?