htmlentities
và htmlspecialchars
được sử dụng để tạo đầu ra HTML được gửi đến trình duyệt.
Các câu lệnh chuẩn bị trước được sử dụng để tạo / gửi các truy vấn tới Công cụ cơ sở dữ liệu .
Cả hai đều cho phép thoát dữ liệu; nhưng chúng không thoát với cách sử dụng giống nhau.
Vì vậy, không, câu lệnh chuẩn bị sẵn (cho truy vấn SQL) không ngăn cản bạn sử dụng đúng cách htmlspecialchars
/ htmlentities
(dành cho tạo HTML)
Giới thiệu về strip_tags
:nó sẽ xóa các thẻ khỏi một chuỗi, trong đó htmlspecialchars
sẽ chuyển đổi chúng thành các thực thể HTML.
Hai hàm đó không làm cùng một việc; bạn nên chọn cái nào để sử dụng tùy thuộc vào nhu cầu của bạn / những gì bạn muốn nhận được.
Ví dụ:với đoạn mã này:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Bạn sẽ nhận được loại đầu ra này:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
Trong trường hợp đầu tiên, không có thẻ; trong thứ hai, những cái đã thoát đúng cách.
Và, với đầu ra HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Bạn sẽ nhận được:
this is a test
this is a <strong>test</strong>
Bạn muốn cái nào trong số đó? Điều đó là câu hỏi quan trọng ;-)