Penggunaan fungsi STRING.MATCH pada PHP

Penggunaan fungsi STRING.MATCH pada PHP

Bismillaahirrohmaanirrohiim…

Kali ini saya ingin berbagi informasi, bahwa fungsi preg_match_all di PHP sangatlah berguna. Salah satunya adalah untuk mengambil string dengan karakter tertentu dalam sebuah teks panjang.

Misalnya kita punya teks seperti ini:

There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by [injected] humour, or [randomised] words which don’t [look] even slightly believable.

Untuk mengambil teks yang ada dalam shortcode tersebut hanya menggunakan perintah ini:

preg_match_all('/\[\w+\]/', $string, $shortcodes);
echo '<pre>';
print_r($shortcodes);
echo '</pre>';

Maka, variabel $shortcodes akan menghasilkan array yang berisi [injected], [randomised], dan [look].

Cukup mudah bukan.

Secara umum, preg_match_all mempunyai konsep dasar:

preg_match_all($pattern, $str, $matches)

$pattern dapat berisi pola apa saja, apapun dalam $str yang sesuai $pattern akan disimpan dalam variabel $matches.

Semoga bermanfaat.

fungsi PHP berguna

Dalam pemrosesan string, kadang kita butuh untuk mencari posisi sebuah karakter di dalam string. Untuk keperluan ini PHP memiliki fungsi bawaan, yakni strpos(). Kali ini saya akan membahas pengertian fungsi strpos() dan cara penggunaan fungsi strpos() di dalam PHP. Selain itu kita juga membahas fungsi stripos().


Pengertian Fungsi strpos()

Fungsi strpos() adalah fungsi bawaan PHP yang bisa digunakan untuk mencari posisi sebuah karakter atau sebuah string di dalam string lainnya. Hasil akhir fungsi ini adalah angka yang menunjukkan posisi karakter/string yang ingin dicari.

Berikut format dasar penulisan fungsi strpos() di dalam PHP:

mixed strpos (string $haystack , mixed $needle [, int $offset = 0 ] )
  • Hasil akhir fungsi strpos adalah mixed, karena bisa berupa angka (posisi ditemukannya karakter yang ingin dicari), maupun FALSE jika fungsi ini tidak menemukan nilai apa-apa.
  • Argumen pertama ($haystack) berupa string asal dimana pencarian akan dilakukan. String ini bisa terdiri dari sebuah kalimat pendek hingga dokumen string panjang yang terdiri dari ribuan huruf.
  • Argumen kedua ($needle) diisi dengan karakter yang akan dicari. Karakter disini bisa berupa sebuah huruf/angka atau string lain seperti kalimat.
  • Argumen ketiga ($offset) bersifat opsional, digunakan untuk ‘melompati’ hasil pencarian dari posisi tertentu. Ini digunakan untuk mengabaikan beberapa kalimat awal pencarian.

Agar lebih mudah dipahami, langsung saja kita membahas contoh penggunaannya:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"e");
echo $posisi;
// 1
?>

Hasil angka 1 dari kode program diatas menunjukkan karakter ‘e’ pertama dalam string $kalimat. Perlu diingat bahwa di dalam PHP penomoran index string dimulai dari angka 0. Sehingga posisi 1 diatas sebenarnya berada pada karakter ke-2.

Selain menggunakan 1 karakter, kita juga bisa mencari sebuah kata atau string lain, seperti contoh berikut:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$cari="serius";
$posisi=strpos($kalimat,$cari);
echo $posisi;
// 7
?>

Dalam kode program diatas, saya menempatkan string “serius” di dalam sebuah variabel, dan mencari posisinya dengan fungsi strpos(). Hasilnya, kata “serius” di temukan dan berada pada index ke-7.

Bagaimana jika di dalam string tidak ditemukan apa-apa? Mari kita coba:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"CSS",9);
var_dump($posisi);
// bool(false)
?>

Hasilnya: FALSE. Saya sengaja menggunakan fungsi var_dump() karena jika menggunakan echo, tidak akan terdapat tampilan apa-apa. Ini terjadi karena perintah echo mengkonversi boolean FALSE menjadi string kosong dan menampilkannya.

Hasil FALSE ini bisa kita manfaatkan untuk membuat sebuah kondisi pemeriksaan apakah karakter yang ingin dicari ada di dalam string, seperti contoh berikut:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"CSS");
if ($posisi){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Tidak ketemu
?>

Dengan membuat kondisi seperti itu, kita bisa membuat kode program untuk menentukan ada tidaknya sebuah karakter. Akan tetapi, efek ‘konversi tipe data otomatis’ dari PHP bisa menimbulkan masalah tersendiri. Perhatikan kode berikut ini:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"Sedang");
if ($posisi){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Tidak ketemu
?>

Hasilnya adalah: “Tidak ketemu” ! Padahal seperti yang kita lihat di dalam string asal, kata “Sedang” ada di posisi pertama string. Apa yang terjadi?

Ini karena efek ‘type juggling’ dimana PHP akan menkonversi sebuah tipe data ke tipe data lain secara otomatis. Hasil dari fungsi strpos($kalimat,”Sedang”) adalah 0, karena kata “Sedang” ditemukan di awal string, dan indexnya adalah 0. Namun sewaktu kita menggunakan hasil ini dalam kondisi IF, nilai 0 akan dikonversi menjadi FALSE, sehingga hasilnya adalah: “Tidak ketemu”.

Agar kode program kita bebas dari masalah ini, bisa mengubah kondisi pemeriksaan IF menjadi seperti berikut ini:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"Sedang");
if ($posisi !== FALSE){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Ketemu
?>

Kali ini saya memaksa PHP untuk memeriksa apakah nilai variabel $posisi harus bertipe boolean FALSE. Kesalahan program seperti ini sering terjadi dan sangat susah untuk ditemukan, karena PHP tidak akan menampilkan pesan error apapun.

Kembali ke fungsi strpos(), kali ini saya akan mencoba menambahkan argumen ke-3:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"e",9);
echo $posisi;
// 15
?>

Argumen ketiga dari fungsi strpos() berfungsi untuk ‘melompati’ beberapa karakter awal. Dalam contoh diatas, karakter “e” yang ingin dicari sebenarnya sudah ditemukan pada index ke-1 dan ke-8. Namun karena saya menambahkan argumen ke-3 dengan nilai 9, maka proses pencarian baru dilakukan mulai dari index ke-9.


Pengertian Fungsi stripos()

Fungsi strpos() yang kita bahas disini bersifat case sensitif, yang berarti akan membedakan antara huruf besar dan huruf kecil. Sebagai contoh, kode program berikut akan menghasilkan nilai FALSE:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"php",9);
var_dump($posisi);
// bool(false)
?>

Ini terjadi karena fungsi strpos() akan membedakan antara “php” dengan “PHP”. Kedua kata ini akan dianggap berbeda, sehingga karakter “php” tidak ditemukan.

Jika kita ingin untuk mengabaikan perbedaan ini, bisa menggunakan fungsi stripos(). Penambahan huruf ‘i’ disini menunjukkan bahwa fungsi stripos() bersifat case-insensitive. Yang berarti akan mengabaikan perbedaan huruf besar dan kecil. Fungsi stripos()juga mendukung argumen yang sama seperti fungsi strpos().

Berikut adalah hasil kode program diatas jika menggunakan fungsi stripos():

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=stripos($kalimat,"php",9);
echo $posisi;
// 22
?>

Kali ini karakter ‘php’ ditemukan pada posisi index ke-22, dimana kata “PHP” berada.


Fungsi strpos() dan stripos() yang kita bahas disini sebenarnya cukup sederhana. Dalam prakteknya, fungsi ini biasa digabung dengan fungsi string lain, misalkan dengan fungsi substr_replace() untuk membuat program pencari kata atau menambahkan fitur find and replace.

Apa fungsi string pada PHP?

Fungsi String berfungsi untuk memanipulasi karakter (string) atau kata untuk dapat diolah dan digunakan kembali. Di dalam bahasa pemrograman PHP terdapat banyak sekali fungsi string yang dapat Anda gunakan. Dengan memanfaatkan fungsi string PHP, menyusun program dan code pun akan sangat memudahkan.

Apa itu preg_match di PHP?

Fungsi preg_match() digunakan untuk dapat mengembalikan apakah kecocokan ditemukan dalam string.

Apa fungsi regex?

Regex adalah singkatan dari Regular Expresion. Regex merupakan sebuah teks (string) yang mendefinisikan sebuah pola pencarian sehingga dapat membantu kita untuk melakukan matching (pencocokan), locate (pencarian), dan manipulasi teks.

Untuk apa fungsi strpos () digunakan?

Fungsi strpos() digunakan untuk dapat menemukan posisi kemunculan pertama string di dalam string lain.