htmlentities() function PHP

htmlentities() function berguna untuk mengubah character entity menjadi nama entity.

Character entity adalah symbol seperti double quote ["] dan symbol lebih kecil dari [<]. Setiap character entity memiliki nama entity seperti [&quot;] untuk ["] dan [&lt;] untuk [<].

htmlentities() memiliki fungsi yang hampir sama dengan htmlspecialchars() function. Perbedaannya adalah htmlspecialchars() function hanya mengubah beberapa character entity yaitu: &"'<>, sedangkan htmlentities() mengubah semua character entity.

Syntax

string htmlentities(string $string, int $flags, string $encoding, bool $double_encode)

Parameter

Parameter Penjelasan
string Parameter ini wajib ada. String yang ingin diproses.
flags Parameter ini pilihan. Menentukan proses yang akan dilakukan terhadap quote, invalid code unit sequences, dan doctype yang digunakan.Berikut ini adalah pilihan proses untuk mengubah quote:

  • ENT_COMPAT (Default). Hanya mengubah double quote ["].
  • ENT_QUOTES. Mengubah single ['] dan double quote ["].
  • ENT_NOQUOTES. Tidak mengubah kedua jenis quote (single dan double quote).

Berikut ini adalah pilihan proses terhadap invalid encoding:

  • ENT_IGNORE. Menghapus character invalid encoding dari string.
  • ENT_SUBSTITUTE. Mengubah invalid encoding dengan Unicode Replacement Character U+FFFD (UTF-8) atau &#FFFD.
  • ENT_DISALLOWED. Mengubah invalid encoding yang disebabkan karena tidak cocok dengan jenis doctype menjadi Unicode Replacement Character U+FFFD (UTF-8) atau &#FFFD.

Berikut ini adalah pilihan proses terhadap code berdasarkan jenis doctype:

  • ENT_HTML401 (Default). Code diproses sebagai HTML 4.01
  • ENT_HTML5. Code diproses sebagai HTML 5
  • ENT_XML1. Code diproses sebagai XML 1
  • ENT_XHTML. Code diproses sebagai XHTML
encoding Parameter ini pilihan. Menentukan jenis character set yang ingin digunakan untuk memproses string. Berikut ini adalah beberapa jenis character set yang bisa digunakan:

  • UTF-8 (Default).
  • ISO-8859-1
  • ISO-8859-15
  • cp866
  • cp1251
  • cp1252
  • KOI8-R
  • BIG5
  • GB2312
  • BIG5-HKSCS
  • Shift_JIS
  • EUC-JP
  • MacRoman

Jika parameter ini dikosongkan maka nilai dari parameter ini tergantung dari versi PHP yang digunakan. PHP 5.6 menggunakan default_charset, PHP 5.4 dan 5.5 menggunakan UTF-8, sedangkan versi PHP sebelumnya menggunakan ISO-8859-1.

Jika string yang akan diproses oleh htmlentities() function di-encoded dalam ISO-8859-1 sedangkan htmlentities() memproses string menggunakan UTF-8 maka bisa terjadi invalid encoding. Solusinya adalah mengisi parameter ini dengan encoding yang sama yaitu ISO-8859-1.

Salah satu hal yang bisa menyebabkan input string tidak cocok dengan htmlentities() function adalah text editor (notepad pada windows). Simpan file pada encoding yang sesuai (UTF-8).

double_encode Parameter ini pilihan. Menentukan untuk mengubah semua character entity atau tidak:

  • TRUE (Default). Bila parameter ini tidak diisi atau diisi dengan TRUE maka semua character entity akan diubah.
  • FALSE. Tidak akan mengubah character entity yang sudah ada.

Catatan

htmlentities() function menghasilkan string yang telah diubah.

Jika string berisi invalid encoding maka htmlentities() function akan menghasilkan string kosong kecuali parameter flags menggunakan ENT_IGNORE atau ENT_SUBSTITUTE.

Nilai default parameter character-set pada PHP 5.4 diubah dari ISO-8859-1 menjadi UTF-8.

ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 dan ENT_XHTML baru ada di PHP 5.4.

ENT_IGNORE baru ada di PHP 5.3.

Parameter double_encode baru ada di PHP 5.2.3.

Parameter character-set baru ada di PHP 4.1.

Character set atau character encoding bisa diibaratkan seperti sebuah font (Arial, times new roman, dll). Setiap aplikasi memiliki character set tersendiri. Contoh, character set yang digunakan oleh HTML 5 adalah UTF-8.

Setiap character dalam sebuah character set memiliki urutan yang yang disebut sebagai encoding. Contoh, Character set ASCII berisi character bahasa Inggris dan beberapa symbol lainnya yang diwakilkan dengan angka mulai dari 1 sampai 127. Sedangkan character set ISO berisi bahasa Eropa.

Encoding bisa digunakan untuk mengubah sebuah character dalam character set A menjadi character dalam character set B dengan membandingkan urutan angka encoding tersebut.

Invalid code unit sequences atau invalid encoding adalah character yang tidak berhasil diencoding sehingga tidak terbaca. Contoh, user memberikan data yang ditulis dalam sebuah character set A melalui sebuah web form dan saat web ingin menyimpan data tersebut dalam character set B ada beberapa character yang tidak berhasil diubah ke dalam character set B.

Contoh

Berikut ini adalah contoh perbedaan htmlentities() function dan htmlspecialchars() function:

Code PHP 1:

<?php
$str = "<Il était une fois un être>.";

echo htmlentities($str) . "\n";
echo htmlspecialchars($str);
?>

Hasil running code di atas bila dilihat melalui page source browser akan tampak sebagai berikut ini:

&lt;Il &eacute;tait une fois un &ecirc;tre&gt;.
&lt;Il était une fois un être&gt;.

Berdasarkan contoh di atas, jika kita hanya ingin mengubah beberapa character entity penting maka disarankan menggunakan htmlspecialchars() karena hasil yang diubah lebih mudah dibaca dan lebih singkat.

2 Responses to “htmlentities() function PHP”

  1. NgeblogCamp says:

    Oh begitu, jadi htmlentities memproses banyak character entity dibandingkan htmlspecialchar

  2. adw 1  1Korrektur – im Eifer des Gefechts passiert, damit ich nicht dümmer aussehe als nötig:CO2 – Kohlendioxid (Gas)H2CO3 – SäureHCO3- – einfach dissoziierte SäureCO3(2-) – doppelt dissoziierte SäureNH3 – Ammoniak (Gas)NH4+ – Ammonium-Ion (Base)so. sorry. Detailfrage, aber ich darf net klugscheißen, wenn das nicht stimmt…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>