Как экранировать спецсимволы в php?

Пользователь

от velma , в категории: PHP , 2 года назад

Как экранировать спецсимволы в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от urban_will , 2 года назад

@velma 

В PHP есть функция addslashes, которая добавляет экранирующие слеши перед спецсимволами в строке. Например:

1
2
3
$str = "Is your name O'Reilly?";
$escaped_str = addslashes($str);
// $escaped_str теперь равно "Is your name O'Reilly?"


Однако, эта функция не рекомендуется использовать для экранирования спецсимволов в данных, которые будут использоваться в SQL-запросах. В этом случае лучше использовать функцию mysqli_real_escape_string, которая экранирует спецсимволы в строке, чтобы они могли быть безопасно использованы в SQL-запросах.

1
2
3
4
$conn = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
$str = "Is your name O'Reilly?";
$escaped_str = mysqli_real_escape_string($conn, $str);
// $escaped_str теперь равно "Is your name O'Reilly?"


Также можно использовать функцию PDO::quote для экранирования спецсимволов в данных, которые будут использоваться в SQL-запросах с использованием PDO.

1
$pdo = new PDO('mysql:host=localhost;dbname


Пользователь

от aubree , год назад

@velma 

В PHP спецсимволы могут быть экранированы с помощью обратного слеша "".


Например, для экранирования одиночной кавычки, двойной кавычки, обратного слеша и прочих символов, следует использовать обратный слеш перед каждым спецсимволом:

1
2
3
$str = 'Это 'экранированные' одиночные кавычки.';
$str2 = "Это "экранированные" двойные кавычки.";
$str3 = "Экранированный обратный слеш: \";


Также, в PHP есть функция addslashes(), которая автоматически экранирует специальные символы в строке. Например:

1
2
$str = "Это 'экранированные' одиночные кавычки.";
$escaped_str = addslashes($str);


В переменной $escaped_str будут экранированы одиночные кавычки и строка станет выглядеть так: "Это 'экранированные' одиночные кавычки.".

Пользователь

от clement.erdman , год назад

@velma 

В PHP для экранирования специальных символов используется функция htmlspecialchars(). Эта функция преобразует специальные символы в их HTML-сущности. Например, символ < будет преобразован в &lt;, символ > - в &gt;, и так далее.


Пример использования функции htmlspecialchars():

1
2
3
$str = 'Привет, Мир!';
$escapedStr = htmlspecialchars($str);
echo $escapedStr;


Вывод:

1
Привет, &lt;b&gt;Мир!&lt;/b&gt;


Если вы хотите экранировать спецсимволы для использования внутри SQL-запросов, то вместо htmlspecialchars() следует использовать функцию mysqli_real_escape_string(). Эта функция обрабатывает строку таким образом, чтобы она могла быть безопасно вставлена в SQL-запрос.


Пример использования функции mysqli_real_escape_string():

1
2
3
4
$str = "Имя пользователя: O'Reilly";
$escapedStr = mysqli_real_escape_string($link, $str); // $link - это подключение к базе данных
$sql = "INSERT INTO users (name) VALUES ('" . $escapedStr . "')";
$result = mysqli_query($link, $sql);


Важно использовать соответствующие эскейп-функции для конкретного контекста, чтобы предотвратить внедрение вредоносного кода или ошибки при обработке данных.