PHP

Fungsi String htmlspecialchars() Pada PHP

Definisi dan Penggunaan

Fungsi htmlspecialchars() dapat digunakan untuk mengubah beberapa karakter yang telah ditentukan menjadi entitas HTML.

Karakter yang telah ditentukan sebelumnya adalah:

  • & (ampersand) menjadi &
  • ” (double quote) menjadi "
  • ‘ (single quote) menjadi ‘
  • < (less than) menjadi &lt;
  • > (greater than) menjadi &gt;

Tip: Untuk mengubah entitas HTML khusus kembali menjadi karakter, gunakan fungsi htmlspecialchars_decode().

Syntax

htmlspecialchars(string,flags,character-set,double_encode)

Nilai Parameter

ParameterDeskripsi
stringRequired. Menentukan string yang akan diubah
flagsOptional. Menentukan bagaimana menangani kutipan, pengkodean yang tidak valid dan tipe dokumen yang digunakan.

Gaya kutipan yang tersedia adalah:

ENT_COMPAT – Default. Mengkodekan hanya tanda kutip ganda
ENT_QUOTES – Mengkodekan tanda kutip ganda dan tunggal
ENT_NOQUOTES – Tidak menyandikan tanda kutip apa pun

Enkode tidak valid:

ENT_IGNORE – Mengabaikan pengkodean yang tidak valid alih-alih membuat fungsi mengembalikan string kosong. Harus dihindari, karena mungkin memiliki implikasi keamanan.
ENT_SUBSTITUTE – Mengganti pengkodean yang tidak valid untuk kumpulan karakter tertentu dengan Karakter Pengganti Unicode U + FFFD (UTF-8) atau & # FFFD; bukannya mengembalikan string kosong.
ENT_DISALLOWED – Mengganti poin kode yang tidak valid di doctype yang ditentukan dengan Unicode Replacement Character U + FFFD (UTF-8) atau & # FFFD;

Flags tambahan untuk menentukan doctype yang digunakan:

ENT_HTML401 – Default. Tangani kode sebagai HTML 4.01
ENT_HTML5 – Menangani kode sebagai HTML 5
ENT_XML1 – Menangani kode sebagai XML 1
ENT_XHTML – Menangani kode sebagai XHTML
character-setOptional. String yang menentukan kumpulan karakter mana yang akan digunakan.

Nilai yang diperbolehkan adalah:

UTF-8 – Default. Unicode 8-bit multi-byte yang kompatibel dengan ASCII
ISO-8859-1 – Eropa Barat
ISO-8859-15 – Eropa Barat (menambahkan tanda Euro + huruf Prancis dan Finlandia tidak ada dalam ISO-8859-1)
cp866 – rangkaian karakter Cyrillic khusus DOS
cp1251 – rangkaian karakter Cyrillic khusus Windows
cp1252 – charset khusus Windows untuk Eropa Barat
KOI8-R – Rusia
BIG5 – Bahasa Cina Tradisional, terutama digunakan di Taiwan
GB2312 – Cina Sederhana, kumpulan karakter standar nasional
BIG5-HKSCS – Big5 dengan ekstensi Hong Kong
Shift_JIS – Jepang
EUC-JP – Jepang
MacRoman – Karakter-set yang digunakan oleh Mac OS

Catatan: Kumpulan karakter yang tidak dikenali akan diabaikan dan diganti dengan ISO-8859-1 dalam versi sebelum PHP 5.4. Mulai PHP 5.4, itu akan diabaikan dan digantikan oleh UTF-8.
double_encodeOptional. Nilai boolean yang menentukan apakah akan mengenkode entitas html yang ada atau tidak.

TRUE – Default. Akan mengubah segalanya
FALSE – Tidak akan menyandikan entitas html yang ada

Detail Teknis

Return Value:Mengembalikan string yang dikonversi

Jika string berisi encoding yang tidak valid, ia akan mengembalikan string kosong, kecuali jika flag ENT_IGNORE atau ENT_SUBSTITUTE disetel
PHP Version:4+
Changelog:PHP 5.6 – Mengubah nilai default untuk parameter set karakter ke nilai charset default (dalam konfigurasi).
PHP 5.4 – Mengubah nilai default untuk parameter set karakter ke UTF-8.
PHP 5.4 – Menambahkan ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 dan ENT_XHTML
PHP 5.3 – Menambahkan konstanta ENT_IGNORE.
PHP 5.2.3 – Menambahkan parameter double_encode.
PHP 4.1 – Menambahkan parameter set karakter.

Contoh 1
Ubah karakter yang telah ditentukan “<” (kurang dari) dan “>” (lebih dari) menjadi entitas HTML:

<?php
$str = "Ini merupakan teks <b>bold</b> .";
echo htmlspecialchars($str);
?>
  /* Output :
Html Output (View Source) :
<!DOCTYPE html>
<html>
<body>
Ini merupakan teks &lt;b&gt;bold&lt;/b&gt; .
</body>
</html>
Browser Output : Ini merupakan teks <b>bold</b> .

Contoh 2
Ubah beberapa karakter yang telah ditentukan menjadi entitas HTML:

<?php
$str = "Jane & 'Tarzan'";
echo htmlspecialchars($str, ENT_COMPAT); // Hanya akan mengubah tanda kutip ganda
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Mengonversi tanda kutip ganda dan tunggal
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
?>
   /* Output :
    
Html Output (View Source):

<!DOCTYPE html>
<html>
<body>
Jane &amp; 'Tarzan'<br>
Jane &amp; 'Tarzan'<br>
Jane &amp; 'Tarzan'
</body>
</html>

Browser Output : 

Jane & 'Stark'
Jane & 'Stark'
Jane & 'Stark'

Contoh 3
Ubah tanda kutip ganda menjadi entitas HTML:

<?php
$str = 'Mempelajari "PHP" cukup menyenangkan.';
echo htmlspecialchars($str, ENT_QUOTES); //Mengonversi tanda kutip ganda dan tunggal
?>
  
   /* Output :
    
Html Output (View Source):

<!DOCTYPE html>
<html>
<body>
Mempelajari &quot;PHP&quot; cukup menyenangkan.
</body>
</html>

Browser Output : Mempelajari "PHP" cukup menyenangkan.

Hanifah Nurbaeti