Tanya Jawab

Mengatasi masalah Deprecated warning ereg() dan eregi()

Kasus:
Bagaimana memperbaiki error fungsi PHP ereg() dan eregi() DEPRECATED pada PHP 5.3?

Penyelesaian:
Fungsi php ereg() dan eregi() sudah tidak disarankan dan harus diganti mulai PHP 5.3.
Fungsi ereg() digunakan untuk melakukan cek kondisi suatu data atau variable.
Pengganti fungsi ereg() dan eregi() adalah fungsi preg_match().
Berikut beberapa contoh fungsi preg_match dengan beberapa kasus yang berbeda.

Contoh menemukan string:
<?php
// Kode "i" setelah pola pembatas menunjukkan proses pencarian case-insensitif
if (preg_match("/php/i", "PHP adalah skrip web pilihan saya.")) {
    echo "String php ditemukan.";
} else {
    echo "String php tidak ditemukan.";
}
?>

Hasilnya “String php ditemukan.”

Contoh Pencarian Kata:

<?php
/* Kode \b dalam pola menunjukkan batas kata, jadi hanya kata yang tepat untuk "web" yang didapat, dan bukan sebagian dari kata "website" atau "aditifwebsite" */
if (preg_match("/\bweb\b/i", "PHP adalah skrip web pilihan saya.")) {
    echo "Kata web ditemukan.";
} else {
    echo "Kata web tidak ditemukan.";
}
if (preg_match("/\bweb\b/i", "PHP adalah skrip pilihan saya untuk membuat website.")) {
    echo "Kata web ditemukan.";
} else {
    echo "Kata web tidak ditemukan.";
}
?>

Hasil pertama: “Kata web ditemukan”.
Hasil kedua: “Kata web tidak ditemukan”.

Mendapatkan nama domain dari URL
<?php
// Mendapatkan nama domain dari URL
preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.aditif.net/share/", $matches);
$host = $matches[1];
// mendapatkan dua segmen terakhir dari variable host
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Nama domain adalah: {$matches[0]}\n";
?>

Hasil: “Nama domain adalah: aditif.net”.

Contoh penggunaan subpola:
<?php
$str = 'aditif: 2013';
preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
/* Kode diatas bekerja di PHP 5.2.2 (PCRE 7.0) keatas, 
     Kode dibawah bekerja untuk PHP 5.2.2 kebawah */
// preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
print_r($matches);
?>

Hasil:

QUOTE:
Array
(
[0] => aditif: 2013
[name] => aditif
[1] => aditif
[digit] => 2013
[2] => 2013
)
Catatan: Gunakan strpos() atau strstr() jika hanya digunakan untuk proses 1 string saja agar lebih cepat.

Sumber referensi: http://www.php.net/manual/en/function.preg-match.php

Post Comment