PHP: Чистка переменной

Чтобы очистить переменную в PHP, можно использовать функцию htmlspecialchars для преобразования специальных символов в их HTML-сущности. Это предотвратит вставку вредоносного кода в веб-страницы. Также можно использовать функцию strip_tags для удаления всех HTML и PHP тегов из строки, чтобы избежать XSS-атак. Кроме того, можно использовать функцию trim для удаления пробельных символов с начала и конца строки, а функцию filter_var для проверки переменной на соответствие определенному формату, например, email адресу или URL

Например, если у вас есть переменная $input, которая содержит пользовательский ввод, вы можете очистить ее с помощью функции htmlspecialchars и trim следующим образом:

# Это удалит пробельные символы с начала и конца строки, 
# заменит специальные символы на HTML-сущности 
# и вернет безопасную для использования переменную $input
htmlspecialchars( trim( $_POST['input'] ) );

# Обратная функцция htmlspecialchars_decode()

# Если нужно преобразовать все возможные символы в соответствующие HTML-сущности, используйте htmlentities
htmlentities( trim( $_POST['input'] ) );

# Обратная функцция html_entity_decode()

# Вторым параметром можно указать флаги для определния правил преобразования
htmlentities( $str, ENT_QUOTES | ENT_IGNORE );
htmlspecialchars( $str, ENT_COMPAT | ENT_SUBSTITUTE | ENT_HTML401 );

# Флаги:
# ENT_COMPAT - преобразует двойные кавычки, одинарные кавычки не изменяются
# ENT_QUOTES - преобразует как двойные, так и одинарные кавычки
# ENT_NOQUOTES - не преобразует кавычки
# ENT_IGNORE - отбрасывает некорректные кодовые последовательности
# ENT_SUBSTITUTE - заменяет некорректные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 или � при использовании другой кодировки, вместо возврата пустой строки
# ENT_HTML401 - обработка кода в соответствии с HTML 4.01
# ENT_XML1 - обработка кода в соответствии с XML 1
# ENT_XHTML - обработка кода в соответствии с XHTML
# ENT_HTML5	- обработка кода в соответствии с HTML 5

# Третьим параметром можно указать кодировку, используемую при конвертации символов
htmlspecialchars( $_POST['input'], ENT_HTML5, 'UTF-8' );

# Четвёртый параметр разрешает или запрещает преобразование существующих html-сущности
# Другими словами, можно запретить двойное преобразование, указав значение false
htmlspecialchars( $_POST['input'], ENT_HTML5, 'UTF-8', false );

Если вам нужно удалить все HTML и PHP теги из строки, вы можете использовать функцию strip_tags:

# Это удалит все теги из строки, оставив только текст
strip_tags( $_POST['input'] );

# Разрешаем <br>, <p> и <a>
strip_tags( $_POST['input'], '<br><p><a>' );

Если вы хотите проверить переменную на соответствие определенному формату, вы можете использовать функцию filter_var:

# Проверка email адреса на валидность:
$email = 'example.com';
if( !filter_var( $email, FILTER_VALIDATE_EMAIL ) )
{
    echo "Email адрес $email неверный";
}

# Удаление всех тегов HTML из строки:
$html = '<p>Это текст <b>с HTML тегами</b></p>';
$clean_html = filter_var( $html, FILTER_SANITIZE_STRING );
echo $clean_html; 
// > "Это текст с HTML тегами"

# Проверка переменной на соответствие URL-адресу:
$url = 'example.com';
if( !filter_var( $url, FILTER_VALIDATE_URL ) )
{
    echo "URL $url неверный";
}

# Удаление всех небезопасных символов из переменной:
$unsafe = '<script>alert("опасность!");</script>';
$safe = filter_var( $unsafe, FILTER_SANITIZE_STRING );
echo $safe; 
// > "alert(опасность!);"

# Проверка переменной на соответствие целому числу:
$number = '123abc';
if( !filter_var( $number, FILTER_VALIDATE_INT ) )
{
    echo "Переменная $number не является целым числом";
}

# Проверка переменной на соответствие диапазону значений:
$age = 15;
$options = array(
    'options' => array(
        'min_range' => 18,
        'max_range' => 65
    )
);
if( !filter_var( $age, FILTER_VALIDATE_INT, $options ) )
{
    echo "Возраст $age не подходит";
}

Для очистки переменной с использованием регулярных выражений в PHP можно использовать функцию preg_replace, которая позволяет заменить совпадения с заданным шаблоном регулярного выражения на указанную строку.

Например, чтобы очистить переменную $input от всех символов, кроме букв, цифр и пробелов, можно использовать следующий код:

# В этом примере регулярное выражение /[^a-zA-Z0-9\s]/ находит все символы, кроме букв, цифр и пробелов, 
# а функция preg_replace заменяет их на пустую строку.

# Таким образом, если переменная $input содержит строку "Hello, 123!@#", 
# после применения этого кода, она будет содержать только "Hello 123".

$input = preg_replace('/[^a-zA-Z0-9\s]/', '', $input);
PHP up: Просмотров: 2.2k
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.