อักขระพิเศษต่าง ๆ ใน HTML จะอยู่ในรูปแบบ entity เช่น &s และ < ซึ่งใน PHP จะแบ่งออกเป็น 2 ฟังก์ชันที่แปลงอักขระพิเศษไปเป็น entity เหล่านั้น 1 ฟังก์ชันสำหรับ remove HTML tags และ 1 ฟังก์ชันสำหรับดึงค่าใน meta tags
ฟังก์ชัน htmlentities() จะทำการเปลี่ยนอักขระพิเศษทุกตัวไปเป็น entity (ยกเว้นช่องว่าง) เช่น เครื่องหมายน้อยกว่า (<) เครื่องหมายมากกว่า (>) ampersand (&) เป็นต้น
<?php
$string = htmlentities("2 < 3 and 3 > 1");
echo $string;
// 2 < 3 and 3 > 1
?>
จะเห็นว่ามันจะไม่ทำการแปลงช่องว่าง (space) ไปเป็นอักขระ แต่จะทำการแปลงอักขระพิเศษอื่น ๆ เช่น <, >, & ให้อยู่ในรูปแบบ entity หมด เราไปดูกันครับว่าฟังก์ชัน htmlentities() มีรูปแบบการใช้งานอย่างไร
# รูปแบบ $output = htmlentities(input, quote_style, charset);
ในพารามิเตอร์ตัวที่ 3 ก็คือการกำหนด charset ให้มัน ถ้าไม่กำหนดค่า default จะเป็น "ISO-8859-1" ส่วนในพารามิเตอร์ตัวที่ 2 ก็คือส่วนของการกำหนด quote_style ซึ่งเป็นการกำหนดว่าเราต้องการให้มันแปลงอักขระ quote แบบไหนบ้าง โดยค่า default ของมัน (ENT_COMPAT) จะเป็นการแปลงเฉพาะ double quotes เท่านั้น แต่ถ้าเราต้องการให้มันแปลงทั้ง single quotes และ double quotes จะต้องกำหนดเป็น ENT_QUOTES แต่ถ้าไม่ต้องการให้มันแปลงทั้งสองอย่างเลยให้กำหนดเป็น ENT_NOQUOTES เช่น
<?php $input = <<< End "Stop pulling my hair!" Jane's eyes flashed.<p> End; $double = htmlentities($input); // "Stop pulling my hair!" Jane's eyes flashed.<p> $both = htmlentities($input, ENT_QUOTES); // "Stop pulling my hair!" Jane's eyes flashed.<p> $neither = htmlentities($input, ENT_NOQUOTES); // "Stop pulling my hair!" Jane's eyes flashed.<p> ?>
ฟังก์ชัน htmlspecialchars() จะทำการแปลงอักขระในชุดของ entity ที่เล็กที่สุด (เล็กกว่าการแปลงโดยใช้ฟังก์ชัน htmlentities()) ซึ่งประกอบไปด้วย
เราไปดูรูปแบบการใช้งานฟังก์ชัน htmlspecialchars() กันครับ ซึ่งมีลักษณะคล้าย ๆ กับฟังก์ชัน htmlentities()
# รูปแบบ $output = htmlspecialchars(input, [quote style, [charset]]);
ผู้สนับสนุน