PHP #14 - Bekerja dengan String (Bag. III)

23 Sep 2020 • ⏳ ~ 14 menit

 

strcmp(), strcasecmp(), strnatcmp(), strnatcasecmp(), strncmp(), dan strncasecmp()

Nama FungsiSintaksDeskripsi
strcmp()strcmp($firstStringToCompare, $secondStringToCompare)Membandingkan nilai dua buah string berdasarkan ASCII, bersifat case-sensitive.
strcasecmp()strcasecmp($firstStringToCompare, $secondStringToCompare)Membandingkan nilai dua buah string berdasarkan ASCII, bersifat case-insensitive.
strnatcmp()strnatcmp($firstStringToCompare, $secondStringToCompare)Membandingkan nilai dua buah string berdasarkan algoritma pengurutan natural, bersifat case-sensitive.
strnatcasecmp()strnatcasecmp($firstStringToCompare, $secondStringToCompare)Membandingkan nilai dua buah string berdasarkan algoritma pengurutan natural, bersifat case-insensitive.
strncmp()strncmp($firstStringToCompare, $secondStringToCompare, $lengthUseToCompare)Membandingkan nilai dua buah string dengan menentukan panjang dari string yang akan dibandingkan, bersifat case-sensitive.
strncasecmp()strncasecmp($firstStringToCompare, $secondStringToCompare, $lengthUseToCompare)Membandingkan nilai dua buah string dengan menentukan panjang dari string yang akan dibandingkan, bersifat case-insensitive.

Fungsi strcmp() dan strcasecmp() berlaku sejak PHP 4+, memiliki dua parameter wajib yang memuat nilai berupa string. Kedua fungsi ini mengembalikan nilai berupa:

  • 0 jika nilai kedua string sama.
  • > 0 jika nilai string pertama lebih besar daripada nilai string kedua.
  • < 0 jika nilai string pertama lebih kecil daripada nilai string kedua.

Perbedaannya, strcmp() bersifat case-sensitive dalam membandingkan, sedangkan strcasecmp() bersifat case-insensitive. Mari kita perhatikan contoh penerapan fungsi tersebut pada kode berikut.

<?php
  $game1 = "Clash Of Clans";
  $game2 = "Clash Of Clans";
  $game3 = "Clash of Clans";
  $game4 = "Clash Royale";
  $game5 = "Clash Royal";
  $game6 = "Clash Royale Clans";

  // strcmp() ~ case-sensitive
  echo strcmp($game1, $game2);          // Output: 0
  echo strcmp($game1, $game3);          // Output: -32
  echo strcmp($game4, $game5);          // Output: 1
  echo strcmp($game4, $game6);          // Output: -6

  // strcasecmp() ~ case-sensitive
  echo strcasecmp($game1, $game2);      // Output: 0
  echo strcasecmp($game1, $game3);      // Output: 0
  echo strcasecmp($game4, $game5);      // Output: 1
  echo strcasecmp($game4, $game6);      // Output: -6
?>

Fungsi strnatcmp() dan strnatcasecmp() berlaku sejak PHP 4+, memiliki dua parameter wajib yang memuat nilai berupa string. Kedua fungsi ini memiliki nilai kembalian yang sama seperti strcmp() dan strcasecmp(). Hanya saja perbandingan fungsi strnatcmp() dan strnatcasecmp() menerapkan algoritma pengurutan natural. Fungsi strnatcmp() bersifat case-sensitive, sedangkan fungsi strnatcasecmp() bersifat case-insensitive. Mari kita perhatikan contoh penerapan fungsi-fungsi ini.

<?php
  // strnatcmp() ~ case-sensitive & natural sort
  echo strnatcmp("Nomor urut saya 2", "Nomor urut saya 10");      // Output: -1
  echo strnatcmp("friends", "Friends");                           // Output: 1

  // strnatcasecmp() ~ case-insensitive & natural sort
  echo strnatcasecmp("NomOr urut saYa 2", "Nomor urut saya 10");  // Output: -1
  echo strnatcasecmp("friends", "Friends");                       // Output: 0
?>

Apa itu algoritma pengurutan natural (natural sort)?

Natural sort merupakan metode pengurutan dalam urutan alfabet, kecuali bilangan multi-digit (diurutkan secara atomik/dianggap seolah-olah satu karakter). Urutan pada komputer umumnya menerapkan pengurutan alfabet murni. Misalnya, “z12” akan diurutkan sebelum “z3” oleh komputer, karena “1” dianggap bernilai lebih kecil dibandingkan “3”. Sedangkan ketika kita menggunakan natural sort, “z3” akan diurutkan sebelum “z12”, karena pengurutan berdasarkan “3” dan “12”.

Fungsi strncmp() dan strncasecmp() berlaku sejak PHP 4+, memiliki tiga parameter wajib. Kedua fungsi ini memiliki nilai kembalian yang sama seperti strcmp() dan strcasecmp(). Berikut keterangan mengenai parameter kedua fungsi ini.

  • $firstStringToCompare menerima string pertama yang akan dibandingkan.
  • $secondStringToCompare menerima string kedua yang akan dibandingkan.
  • $lengthUseToCompare memuat nilai berupa integer yang digunakan untuk menentukan panjang string yang akan dibandingkan.

Fungsi strncmp() bersifat case-sensitive, sedangkan strncasecmp() bersifat case-insensitive. Mari kita perhatikan contoh penerapan fungsi-fungsi ini.

<?php
  // strncmp() ~ case-sensitive
  echo strncmp("Belajar Coding seru", "Belajar Coding seruuuuu", 11);    
  # Output: 0
  echo strncmp("Belajar Coding seru", "Belajar COding seruuuuu", 11);    
  # Output: 1

  // strncasecmp() ~ case-sensitive
  echo strncasecmp("Belajar Coding seru", "Belajar Coding seruuuuu", 11);
  # Output: 0
  echo strncasecmp("Belajar Coding seru", "Belajar COding seruuuuu", 11);
  # Output: 0
  
  // 11 menandakan bahwa perbandingan kedua string hanya sepanjang 11 karakter dari kiri ("belajar cod")
?>

substr(), substr_compare(), substr_count(), dan substr_replace()

Nama FungsiSintaksDeskripsi
substr()substr($string, $start, $length)Mengambil bagian dari sebuah string.
substr_compare()substr_compare($string1, $string2, $start, $length, $case_insensitivity)Membandingkan dua buah bagian string dari posisi dan panjang yang ditentukan.
substr_count()substr_count($haystack, $needle, $start, $length)Memberi informasi sebanyak berapa kali $needle ditemukan dalam $haystack pada rentang posisi tertentu.
substr_replace()substr_replace($string, $replacement, $start, $length)Mengganti bagian dari string dengan string lainnya.

Fungsi substr() telah ada sejak PHP versi 4+ dan mengembalikan nilai berupa string, string kosong, ataupun nilai false (jika terjadi kesalahan). Berikut keterangan mengenai parameter fungsi ini.

  • $string menerima string yang akan diolah
  • $start menerima nilai integer yang menunjukkan posisi awal fungsi harus bekerja dalam $string.
    • Jika $start bernilai negatif, posisi bekerja dimulai dari nilai karakter terhitung dari akhir string.
    • Jika $start bernilai negatif namun melampaui posisi karakter negatif, fungsi akan mengembalikan string dari posisi awal.
    • Jika $start bernilai lebih besar dibanding panjang karakter $string, nilai false akan dikembalikan.
    • Jika $start bernilai sama dengan panjang karakter $string, string kosong akan dikembalikan.
  • $length merupakan parameter opsional yang menerima nilai integer untuk menunjukkan seberapa banyak karakter yang harus diolah fungsi dari posisi $start.
    • Jika $length bernilai negatif, fungsi akan mengembalikan string mulai dari posisi $start hingga sebanyak $length karakter dari akhir $string.
    • Jika $length bernilai 0, false, atau null, fungsi akan mengembalikan string kosong.
    • Jika nilai $length tidak ditentukan, secara default fungsi akan mengembalikan string dimulai dari $start hingga akhir $string.

Mari kita perhatikan contoh penerapan substr() pada kode berikut.

<?php
  $alphabetList = "abcdefghijklmnopqrstuvwxyz";

  var_dump(substr($alphabetList, 0));
  # Output: string(26) "abcdefghijklmnopqrstuvwxyz"

  var_dump(substr($alphabetList, 3));
  # Output: string(23) "defghijklmnopqrstuvwxyz"
  
  var_dump(substr($alphabetList, 26))
  # Output: string(0) ""

  var_dump(substr($alphabetList, 28));      
  # Output: bool(false)

  var_dump(substr($alphabetList, -5));      
  # Output: string(5) "vwxyz"

  var_dump(substr($alphabetList, -26));     
  # Output: string(26) "abcdefghijklmnopqrstuvwxyz"

  var_dump(substr($alphabetList, -32));     
  # Output: string(26) "abcdefghijklmnopqrstuvwxyz"

  var_dump(substr($alphabetList, 0, 0));    
  # Output: string(0) ""

  var_dump(substr($alphabetList, 0, 4));    
  # Output: string(4) "abcd"

  var_dump(substr($alphabetList, 0, -5));   
  # Output: string(21) "abcdefghijklmnopqrstu"

  var_dump(substr($alphabetList, 10, -5));  
  # Output: string(11) "klmnopqrstu"

  var_dump(substr($alphabetList, -10, -11));
  # Output: string(0) ""
?>

Fungsi substr_compare() berlaku sejak PHP versi 5+ dan memiliki parameter dengan keterangan sebagai berikut.

  • $string1 adalah string pertama yang akan dibandingkan.
  • $string2 adalah string kedua yang akan dibandingkan.
  • $start memuat nilai integer yang menentukan posisi di mana perbandingan harus mulai dilakukan pada $string1. Jika bernilai negatif, fungsi akan menghitung dari akhir string.
  • $length adalah parameter opsional yang memuat integer untuk menentukan berapa karakter $string1 untuk dibandingkan. Secara default, parameter ini mengambil banyak sisa karakter yang ada pada string.
  • $case_insensitivity menerima boolean untuk menentukan sifat case-insensitive. Parameter ini merupakan parameter opsional dan secara default bernilai false, sehingga perbandingan bersifat case-sensitive.

Nilai kembalian fungsi substr_compare() berupa:

  • 0 jika dua bagian string bernilai sama.
  • < 0 jika $string1 (dari posisi $start) lebih kecil dari $string2.
  • > 0 jika $string1 (dari posisi $start) lebih besar dari $string2.

Jika parameter $length bernilai lebih kecil dari 0, fungsi akan mengembalikan peringatan.

Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  var_dump(substr_compare("Hello world", "world", 6));
  # Output: int(0)

  var_dump(substr_compare("Hello world", "Hello", 0));
  # Output: int(6)

  var_dump(substr_compare("Hello", "Helloooo", 0));
  # Output: int(-3)

  var_dump(substr_compare("world", "or", 1, 2));
  # Output: int(0)

  var_dump(substr_compare("world", "ld", -2, 2));
  # Output: int(0)

  var_dump(substr_compare("world", "Or", 1, 2, true));
  # Output: int(0)

  var_dump(substr_compare("Hello world", "Hello", 0, 0));
  # Output: int(0)

  var_dump(substr_compare("Hello world", "Hello", 0, -12));
  # Output:
  // Warning: substr_compare(): The length must be greater than or equal to zero....
  // bool(false)
?>

Fungsi substr_count() ada sejak PHP versi 4+ dan mengembalikan nilai berupa integer (jumlah $needle pada $haystack). Fungsi ini memiliki dua parameter wajib ($haystack dan $needle) dan dua parameter opsional ($start dan $length). Berikut keterangan parameter fungsi ini.

  • $haystack memuat string sebagai wadah perhitungan jumlah $needle.
  • $needle memuat string yang akan dihitung jumlahnya. Parameter ini bersifat case-sensitive.
  • $start memuat nilai integer yang menentukan posisi mulainya perhitungan. Jika bernilai negatif, perhitungan dimulai dari akhir string.
  • $length memuat nilai integer yang menentukan jumlah karakter maksimum dari $haystack yang posisinya telah ditentukan oleh $start. Jika bernilai negatif, fungsi akan menghitung dari akhir $haystack dan memilih karakter tersebut sebagai akhir perhitungan.

Fungsi substr_count() tidak menghitung sub-string yang saling tumpang tindih.

Mari kita perhatikan contoh kode berikut.

<?php
  $text = 'Terus bergerak! Terus melangkah!';
  # jumlah karakter 32
  
  echo substr_count($text, 'Terus');            
  # Output: 2

  echo substr_count($text, 'Terus', 4);         
  # Output: 1

  echo substr_count($text, 'Terus', 4, 4);      
  # Output: 0

  echo substr_count($text, 'Terus', 4, 50);     
  # Output: Warning: substr_count(): Invalid length value...

  echo substr_count('abcabcab', 'abcab');       
  # Output: 1
?>

Fungsi substr_replace() berlaku sejak PHP versi 4+, memiliki hasil kembalian berupa string atau array tergantung parameter yang dimuat. Berikut keterangan dari parameter fungsi ini.

  • $string bertujuan untuk menentukan string atau array kumpulan string yang akan diolah.
  • $replacement bertujuan untuk menentukan string pengganti.
  • $start bertujuan untuk menentukan posisi mulainya penggantian string.
    • Jika bernilai > 0, penggantian string terjadi mulai dari posisi tersebut dihitung dari awal string.
    • Jika bernilai < 0, penggantian string terjadi mulai dari posisi tersebut dihitung dari akhir string.
    • Jika bernilai 0, penggantian terjadi dari awalan string.
  • $length merupakan parameter opsional yang bertujuan untuk menentukan jumlah karakter yang akan diganti. Secara default, nilainya sama dengan panjang karakter dalam $string.
    • Jika bernilai > 0, penggantian string sebanyak $length karakter.
    • Jika bernilai < 0, penggantian string menyisakan sebanyak $length karakter akhir string.
    • Jika bernilai 0, fungsi akan menambah string dari posisi $start.

Mari kita perhatikan contoh kode berikut.

<?php
  var_dump(substr_replace("Hello World!", "Kawan!", 0));
  var_dump(substr_replace("Hello World!", "Kawan!", 6));
  var_dump(substr_replace("Hello World!", "Kawan!", -5));

  var_dump(substr_replace("Kawan!", "Hello ", 0, 0));
  var_dump(substr_replace("Kawan!", "Hello ", 0, -2));
  var_dump(substr_replace("Kawan!", "Hello ", 0, 3));

  $arrayToReplace = ["1: AAA", "2: AAA", "3: AAA"];
  var_dump(substr_replace($arrayToReplace, '-', 0, 3));
  var_dump(substr_replace($arrayToReplace, 'BBB', 3, 3));
?>
string(6) "Kawan!"
string(12) "Hello Kawan!"
string(13) "Hello WKawan!"

string(12) "Hello Kawan!"
string(8) "Hello n!"
string(9) "Hello an!"

array(3) {
  [0]=>
  string(4) "-AAA"
  [1]=>
  string(4) "-AAA"
  [2]=>
  string(4) "-AAA"
}
array(3) {
  [0]=>
  string(6) "1: BBB"
  [1]=>
  string(6) "2: BBB"
  [2]=>
  string(6) "3: BBB"
}

Jika $start adalah angka negatif dan $length lebih kecil atau sama dengan $start, $length menjadi 0.

explode() dan implode()

Nama FungsiSintaksDeskripsi
explode()explode($separator, $string, $limit)Memecah string menjadi array.
implode() alias join()implode($glue, $array) alias join($glue, $array)Menggabungkan anggota-anggota array menjadi string.

Berikut keterangan dari parameter-parameter fungsi explode().

  • $seperator merupakan parameter yang digunakan untuk mengenal pemisah antarkata.
  • $string merupakan parameter yang berisi string yang nantinya akan dipecah menjadi array.
  • $limit merupakan parameter yang berisi batasan jumlah array yang akan dibuat dari string. Parameter ini bersifat opsional.
    • Jika $limit diisi nilai positif, jumlah array akan mengikuti nilai yang ditetapkan.
    • Jika $limit diisi nilai negatif, jumlah array akan mengikuti nilai yang kita tetapkan dan membuang sebanyak $limit anggota terakhir.
    • Jika $limit diisi dengan 0, fungsi akan menghasilkan array dengan 1 anggota saja.

Mari kita perhatikan contoh kode berikut.

<?php
  $fruits = 'Apple,Pineapple,Apricot,Grapes';

  print_r(explode(',', $fruits));
  print_r(explode(',', $fruits, 0));
  print_r(explode(',', $fruits, 3));
  print_r(explode(',', $fruits, -2));
?>
Array
(
    [0] => Apple
    [1] => Pineapple
    [2] => Apricot
    [3] => Grapes
)

Array
(
    [0] => Apple,Pineapple,Apricot,Grapes
)

Array
(
    [0] => Apple
    [1] => Pineapple
    [2] => Apricot,Grapes
)

Array
(
    [0] => Apple
    [1] => Pineapple
)

Ketika kita tidak menetapkan $limit pada fungsi explode(), fungsi tersebut akan membentuk array dengan anggota sebanyak mungkin sesuai pemecahan string berdasarkan pemisahnya.

Fungsi implode() alias join() memiliki cara kerja yang berlawanan dengan fungsi explode(). Berikut keterangan parameter fungsi ini.

  • $glue merupakan parameter berisi string yang berfungsi sebagai penghubung/pelekat antaranggota elemen dari $array. Parameter ini bersifat opsional dan memiliki nilai default "" (string kosong).
  • $array merupakan parameter wajib yang memuat array yang akan digabung anggotanya menjadi sebuah string.

Mari kita lihat contoh penerapan fungsi ini pada kode berikut.

<?php
  $transports = ['Bus', 'Car', 'Train', 'Plane'];

  echo implode($transports);
  echo join($transports);
  # Output: BusCarTrainPlane

  echo implode(" ", $transports);
  echo join(" ", $transports);
  # Output: Bus Car Train Plane
  
  echo implode("+", $transports);
  echo join("+", $transports);
  # Output: Bus+Car+Train+Plane
?>

Pengayaan

Nama FungsiSintaksDeskripsi
nl2br()nl2br($string, $xhtml)Mengonversi newlines (\r\n, \n\r, \n, dan \r) menjadi HTML line breaks (<br/> atau <br>).
parse_str()parse_str($string, $result)Mengubah string query menjadi variabel.

Fungsi nl2br() telah ada sejak PHP versi 4+, memiliki satu parameter wajib ($string) dan satu parameter opsional ($xhtml). Parameter opsional tersebut baru ditambahkan sejak PHP versi 5.3 dan hanya dapat menerima nilai boolean. Parameter ini bertujuan untuk menentukan tag HTML line breaks jenis mana yang dipergunakan, <br/> jika $xhtml bernilai true, dan <br> jika sebaliknya. Secara default, parameter $xhtml bernilai true.

Dalam PHP, tampilan output dilakukan pada browser dan diinterpretasikan sebagai HTML. Pada markup language ini, kita tidak dapat mengubah tampilan dengan menambah extra spaces atau extra lines. Browser secara otomatis akan menghapus extra spaces atau extra lines saat halaman ditampilkan. Hal ini mengakibatkan output sulit terbaca.

Untuk itu, pembacaan output yang “readable” dapat dilakukan dengan View Source (menggunakan shortcut Ctrl + U pada PC, ⌘ + U atau ⌥ + ⌘ + U pada Mac, disesuaikan dengan browser yang digunakan).

<?php
  $twoLineText = "First Line.\nSecond Line.";

  echo nl2br($twoLineText);
  echo nl2br($twoLineText, false);
?>
First Line.<br />
Second Line.

First Line.<br>
Second Line.

Fungsi parse_str() telah ada sejak PHP versi 4+ dan tidak memiliki nilai kembalian karena nilai-nilai pada string query dimuatkan pada variabel-variabel. Fungsi ini menerima parameter $string berupa string query dan parameter $result yang dapat memuat array. Jika kita memuat $result dengan nama variabel, otomatis variabel tersebut akan menjadi array dengan elemen-elemen yang memiliki key berupa nama string query dan value berupa nilai dari string query tersebut. Parameter $result berlaku sejak PHP 4.0.3 dan bersifat wajib sejak PHP 7.2.0. Mari kita perhatikan contoh berikut.

<?php
  parse_str("name=Budi&hobby=Badminton");
  parse_str("name=Budi&hobby=Badminton", $biodata);

  echo $name;
  echo $hobby;

  print_r($biodata)
?>
Budi
Badminton

Array
(
    [name] => Budi
    [hobby] => Badminton
)
Nama FungsiSyntaxDeskripsi
htmlentities()htmlentities($string, $flags, $characterSet, $doubleEncode)Mengubah karakter-karakter menjadi HTML entities.
htmlspecialchars()htmlspecialchars($string, $flags, $characterSet, $doubleEncode)Mengubah karakter spesial menjadi HTML entities.
html_entity_decode()html_entity_decode($input_string, $flags, $encoding)Mengubah HTML entities menjadi karakter yang sesuai.
htmlspecialchars_decode()htmlspecialchars_decode($string, $flags)Mengubah HTML entities khusus kembali menjadi karakter khusus.
strip_tags()strip_tags($string, $allowable_tags)Menghilangkan semua tag HTML dan PHP dari sebuah string.

Fungsi htmlentities() berlaku sejak PHP versi 4+ dan menghasilkan kembalian berupa string yang telah dikonversi ke bentuk HTML entities. Berikut keterangan parameter dari fungsi htmlentities().

  • $string berisi teks yang akan dikonversi dan merupakan parameter wajib.
  • $flags berisi pilihan yang menentukan penanganan kutipan, pengkodean tidak valid, dan doctype. Parameter ini bersifat opsional.
    • Penanganan kutipan
      • ENT_COMPAT - Mengubah tanda kutip ganda, merupakan parameter secara default.
      • ENT_QUOTES - Mengubah tanda kutip ganda dan tanda kutip.
      • ENT_NOQUOTES - Tidak mengubah tanda kutip.
    • Pengkodean tidak valid
      • ENT_IGNORE - Mengabaikan pengkodean yang tidak valid sehingga fungsi tidak mengembalikan string kosong. Sebaiknya dihindari karena mungkin memiliki implikasi keamanan.
      • ENT_SUBSTITUTE - Mengganti pengkodean yang tidak valid dengan Unicode Replacement Character U+FFFD (UTF-8) atau &#FFFD sehingga fungsi tidak mengembalikan string kosong.
      • ENT_DISALLOWED - Mengganti poin kode yang tidak valid untuk jenis dokumen yang diberikan dengan Unicode Replacement Character U+FFFD (UTF-8) atau &#FFFD. Hal ini mungkin berguna, misalnya untuk memastikan format yang baik dari dokumen XML dengan konten eksternal yang disematkan.
    • Penanganan doctype
      • ENT_HTML401 - Penanganan kode seperti HTML 4.01, merupakan parameter secara default.
      • ENT_HTML5 - Penanganan kode seperti HTML 5.
      • ENT_XML1 - Penanganan kode seperti XML 1.
      • ENT_XHTML - Penanganan kode seperti XHTML.
  • $characterSet memuat string yang menentukan character set yang akan digunakan. Character set yang didukung antara lain:
    • UTF-8
    • ISO-8859-1
    • ISO-8859-15
    • cp866
    • cp1251
    • cp1252
    • KOI8-R
    • BIG5
    • GB2312
    • BIG5-HKSCS
    • Shift_JIS
    • EUC-JP
    • MacRoman

    Character set yang tidak dikenali akan diabaikan dan diganti dengan ISO-8859-1 untuk versi sebelum PHP 5.4. Mulai PHP 5.4, character set yang tidak dikenali akan diabaikan dan digantikan oleh UTF-8.

  • $doubleEncode adalah parameter boolean yang akan mengonversi segalanya jika true dan tidak akan mengonversi HTML entities yang sudah ada jika false. Secara default, parameter ini bernilai true.

Jika parameter $string berisi encoding yang tidak valid, fungsi akan mengembalikan string kosong, terkecuali jika $flags diatur sebagai ENT_IGNORE atau ENT_SUBSTITUTE. Mari kita perhatikan contoh penerapan htmlentities() pada kode berikut.

<?php
  $thermodynamics = '"ΔU"';

  echo htmlentities($thermodynamics);
  // Output pada View Source: &quot;&Delta;U&quot;quot;
?>

Fungsi htmlspecialchars() memiliki cara kerja yang mirip dan parameter yang sama dengan fungsi htmlentities(), tetapi fungsi ini hanya akan mengonversi karakter & (ampersand), " (double quote), ' (single quote), < (less than), dan > (greater than). Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $strongThermodynamics = '<strong>"ΔU"</strong>';

  echo htmlspecialchars($strongThermodynamics);
  // Output pada View Source: &lt;strong&gt;&quot;ΔU&quot;&lt;/strong&gt;gt;

Fungsi html_entity_decode() memiliki cara kerja yang berlawanan dengan fungsi htmlentities(). Berikut ini merupakan keterangan dari parameter fungsi tersebut.

  • $input_string merupakan parameter yang berisi string yang akan diolah hasilnya. Parameter ini bersifat wajib.
  • $flags merupakan parameter opsional yang menentukan bentuk tanda petik (""). Parameter ini memiliki beberapa nilai, antara lain:
    • Penanganan kutipan
      • ENT_COMPAT - Hanya mengonversi petik ganda, merupakan parameter default.
      • ENT_QUOTES - Mengonversi petik ganda maupun tunggal.
      • ENT_NOQUOTES - Tidak mengonversi petik ganda maupun tunggal.
    • Penanganan doctype
      • ENT_HTML401 - Penanganan kode seperti HTML 4.01, merupakan parameter secara default.
      • ENT_HTML5 - Penanganan kode seperti HTML 5.
      • ENT_XML1 - Penanganan kode seperti XML 1.
      • ENT_XHTML - Penanganan kode seperti XHTML.
  • $encoding merupakan parameter untuk memilih character set dan bersifat opsional. Nilai parameter ini diantaranya:
    • UTF-8
    • ISO-8859-1
    • ISO-8859-15
    • cp866
    • cp1251
    • cp1252
    • KOI8-R
    • BIG5
    • GB2312
    • BIG5-HKSCS
    • Shift_JIS
    • EUC-JP
    • MacRoman

    Character set yang tidak dikenali akan diabaikan dan diganti dengan ISO-8859-1 untuk versi sebelum PHP 5.4. Mulai PHP 5.4, character set yang tidak dikenali akan diabaikan dan digantikan oleh UTF-8.

Mari kita perhatikan contoh penerapan fungsi html_entity_decode().

<?php
  $greet = "Hello &quot;Reader&quot;, have a nice day &#64;informatika&#46;web&#46;id&#33;";

  echo(html_entity_decode($greet));
  // Output: Hello "Reader", have a nice day @informatika.web.id!  
?>

Fungsi htmlspecialchars_decode() memiliki cara kerja yang berlawanan dengan fungsi htmlspecialchars(). Fungsi ini memiliki parameter $string dan $flags yang sama dengan fungsi html_entity_decode(). Hanya saja entities yang dikonversi adalah &amp;, &quot; (ketika ENT_NOQUOTES tidak ditetapkan), &#039; (ketika ENT_QUOTES ditetapkan), &lt; dan &gt;. Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $textInHTML = "&quot;Ini&quot; merupakan tulisan yang &lt;strong&gt;STRONG&lt;/strong&gt;";

  echo(htmlspecialchars_decode($textInHTML));
  //  Output pada View Source: "Ini" merupakan tulisan yang <strong>STRONG</strong>
?>

Fungsi strip_tags() memiliki dua parameter. Parameter pertama ($string) memuat string yang akan dihilangkan tag HTML-nya. Parameter kedua ($allowable-text) berisi tag-tag yang tidak boleh dihilangkan/dihapus, bersifat opsional, dan dapat menerima string hingga array (sejak PHP 7.4.0). Sebagai tambahan, comments pada HTML akan selalu dihilangkan dan tidak dapat dihindari dengan parameter $allowable-text. Mari kita perhatikan contoh penerapannya.

<?php
  $introduce = '<h4>Hello my name is <em>Mileney</em>.</h4>';

  echo(strip_tags($introduce));
  echo(strip_tags($introduce, '<em>'));
  echo(strip_tags($introduce, ['<h4>', '<em>']));
?>

Output pada View Source:

Hello my name is Mileney.
Hello my name is <em>Mileney</em>.
<h4>Hello my name is <em>Mileney</em>.</h4>
PHP

PHP #15 - Array (Bag. I)

PHP #13 - Bekerja dengan String (Bag. II)

comments powered by Disqus