Simbol derajat ekspresi reguler php. Pelajaran PHP - ekspresi reguler dengan contoh. Menyusun ulang dua angka




Ekspresi reguler adalah alat yang sangat berguna bagi pengembang. Mereka dapat digunakan untuk menemukan, mengidentifikasi, atau mengganti teks, kata, atau karakter lainnya. Artikel hari ini berisi 15 ekspresi reguler paling berguna yang akan berguna bagi pengembang web mana pun.

Pengantar Ekspresi Reguler

Banyak pengembang baru merasa ekspresi reguler sangat sulit untuk dipahami dan digunakan. Faktanya, semuanya tidak sesulit kelihatannya. Sebelum kita membahas ekspresi reguler, dengan kodenya yang berguna dan serbaguna, mari kita lihat dasar-dasarnya:

Sintaks ekspresi reguler

Ekspresi reguler Cara
foo Tali “foo”
^foo Baris dimulai dengan "foo"
foo$ Baris diakhiri dengan “foo”
^foo$ "foo" hanya muncul sekali dalam satu baris
a, b, atau c
karakter huruf kecil apa pun
[^A-Z] karakter apa pun yang bukan huruf besar
(gif|jpg) Berarti "gif" dan "jpeg"
+ Satu atau lebih karakter huruf kecil
Angka, titik, atau tanda minus apa pun
^{1,}$ Kata apa pun, setidaknya satu huruf, angka, atau _
()() wy, wz, xy, atau xz
(^A-Za-z0-9) Karakter apa saja (bukan angka atau huruf)
({3}|{4}) Berarti tiga huruf atau 4 angka

Fungsi PHP untuk ekspresi reguler

Fungsi Keterangan
preg_match() Fungsi preg_match() mencari string menggunakan pola tertentu, mengembalikan nilai true jika string ditemukan dan false jika sebaliknya
preg_match_all() Fungsi preg_match_all() menemukan semua kemunculan string berdasarkan pola
preg_replace() Fungsi preg_replace() beroperasi dengan prinsip yang sama seperti ereg_replace(), hanya saja ekspresi reguler dapat digunakan untuk menentukan pola pencarian dan string yang akan digunakan untuk mengganti nilai yang ditemukan.
preg_split() Fungsi preg_split() berfungsi sama seperti split(), hanya saja ekspresi reguler dapat digunakan sebagai parameter pola pencarian.
preg_grep() Fungsi preg_grep() mencari semua elemen array input, mengembalikan semua elemen yang cocok dengan pola ekspresi reguler.
preg_quote() Lolos dari karakter ekspresi reguler

Verifikasi nama domain

Memeriksa apakah suatu string adalah nama domain yang valid

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "URL Anda baik-baik saja ."; ) else ( echo "URL salah."; )

Menyoroti sebuah kata dalam teks

Ini adalah ekspresi reguler yang sangat berguna, dengan bantuannya Anda dapat menemukan kata yang diinginkan dan menyorotnya. Sangat berguna untuk menampilkan hasil pencarian.

$text = "Contoh kalimat dari KomunitasWeb, regex sudah populer di pemrograman web. Sekarang kita belajar regex. Menurut wikipedia, Regular Expression (disingkat regex atau regexp, dengan bentuk jamak regex, regexps, atau regexen) ditulis dalam bentuk formal bahasa yang dapat diinterpretasikan oleh pemroses ekspresi reguler"; $teks = preg_replace("/b(regex)b/i", " 1", $teks); echo $teks;

Menyoroti hasil pencarian di blog WordPress

Seperti disebutkan dalam contoh sebelumnya, contoh kode ini mudah digunakan dalam hasil pencarian dan merupakan cara terbaik untuk mengimplementasikan fungsi ini di blog WordPress.

Buka file search.php Anda, dan temukan fungsi the_title(). Ganti dengan kode berikut:

Gema $judul;

Sekarang, di atas baris ini, tambahkan kode ini:

\0", $judul); ?>

Simpan file search.php dan buka style.css. Tambahkan baris berikut:

Kutipan-pencarian yang kuat ( latar belakang: kuning; )

Mendapatkan semua gambar dari dokumen HTML

Jika Anda perlu mendapatkan semua gambar dari halaman web, kode ini harus dimiliki. Anda dapat dengan mudah membuat pengunduh gambar menggunakan kekuatan cURL

$gambar = susunan(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); tidak disetel($data); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data sebagai $url) ( $info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($info["ekstensi"] == "jpeg") ||. ($info["ekstensi"] == "gif") ||. ($info["ekstensi"] == "png")) array_push($ gambar, $url);

Hapus kata-kata duplikat (tidak peka huruf besar-kecil)

Apakah kata-kata sering diulang saat mengetik? Ekspresi reguler ini akan membantu.

$teks = preg_replace("/s(w+s)1/i", "$1", $teks);

Menghapus Tanda Baca Duplikat

Hal yang sama, hanya untuk tanda baca. Ucapkan selamat tinggal pada koma ganda.

$teks = preg_replace("/.+/i", ".", $teks);

Cari tag XML/HTML

Fungsi sederhana ini membutuhkan dua argumen. Yang pertama adalah tag yang perlu Anda temukan, dan yang kedua adalah variabel yang berisi XML atau HTML. Sekali lagi, fungsi ini sangat nyaman digunakan bersama dengan cURL.

Fungsi get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $cocok, PREG_PATTERN_ORDER); kembalikan $pertandingan; )

Cari tag XHTML/XML dengan nilai atribut tertentu

Fungsi ini sangat mirip dengan fungsi sebelumnya, hanya saja Anda dapat memberikan tag atribut yang diinginkan. Misalnya, Anda dapat dengan mudah menemukannya

.

Fungsi get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($ attr); $nilai = preg_quote($nilai); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$nilai\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); kembalikan $matches; )

Menemukan nilai warna heksadesimal

Alat lain yang berguna untuk pengembang web! Ini memungkinkan Anda menemukan/memeriksa nilai warna heksadesimal.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "contoh 6 berhasil."; )

Cari judul artikel

Cuplikan kode ini akan menemukan dan menampilkan teks di dalam tag , di halaman html.

$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$halaman,$regs); echo $regs; fclose($fp);

Mengurai log Apache

Sebagian besar situs berjalan di server web Apache yang terkenal. Jika situs Anda salah satunya, mengapa tidak menggunakan PHP dan ekspresi reguler untuk mengurai log Apache?

//Log: Server web Apache //Hanya hit yang berhasil pada file HTML. Berguna untuk menghitung jumlah tampilan halaman. "^((?#IP klien atau nama domain)S+)s+((?#otentikasi dasar)S+s+S+)s+[((?#tanggal dan waktu)[^]]+)]s+"(?: DAPATKAN|POST|HEAD) ((?#file)/[^ ?]+?.html?)??((?#parameter)[^ ?]+)? HTTP/+"s+(?#kode status)200s+((?#bytes ditransfer)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#agen pengguna )[^"]*)"$" //Log: Server web Apache //hanya kesalahan 404 "^((?#IP klien atau nama domain)S+)s+((?#otentikasi dasar)S+s+S+) s+[((?#tanggal dan waktu)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[ ^ ?"]+)? HTTP/+"s+(?#kode status)404s+((?#bytes ditransfer)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#agen pengguna )[^"]*)"$"

Mengganti tanda kutip ganda dengan tanda kutip cerdas

Jika Anda penggemar tipografi, Anda akan menyukai ekspresi reguler yang menggantikan tanda kutip ganda biasa dengan tanda kutip cerdas. Ekspresi reguler serupa digunakan di WordPress dalam konten halaman.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $teks);

Verifikasi kata sandi yang komprehensif

Ekspresi reguler ini akan memastikan bahwa setidaknya enam karakter, angka, tanda hubung, dan garis bawah dimasukkan ke dalam kolom teks.

Bidang teks harus berisi setidaknya satu karakter huruf besar, satu karakter huruf kecil, dan satu angka.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

WordPress: Menggunakan Ekspresi Reguler untuk Mendapatkan Gambar dari Postingan

Karena banyak dari Anda adalah pengguna WordPress, Anda mungkin memerlukan kode yang memungkinkan Anda mendapatkan semua gambar dari teks artikel dan menampilkannya.

Untuk menggunakan kode ini, cukup tempelkan ke file mana pun di tema Anda.

post_content; $szSearchPattern = "~ ]* />~"; // Jalankan preg_match_all untuk mengambil semua gambar dan menyimpan hasilnya di $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Periksa apakah kita memiliki setidaknya 1 gambar $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Sekarang di sini Anda akan melakukan apa pun yang perlu Anda lakukan dengan gambar // Untuk contoh ini, gambar hanya ditampilkan untuk ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Pembuatan emotikon otomatis

Fitur lain yang digunakan di wordpress adalah memungkinkan Anda mengganti karakter emoji dengan gambar emoji secara otomatis.

$texte="Teks dengan senyuman:-)"; gema str_replace(":-)"," ",$teks);

Saat bekerja dengan teks dalam bahasa pemrograman modern apa pun, pengembang terus-menerus dihadapkan pada tugas memeriksa data yang dimasukkan untuk kepatuhan dengan pola yang diinginkan, mencari dan mengganti fragmen uji, dan operasi khas lainnya untuk memproses informasi simbolis. Mengembangkan algoritme verifikasi Anda sendiri menyebabkan hilangnya waktu, ketidakcocokan kode program, dan kerumitan dalam pengembangan dan modernisasinya.

Pesatnya perkembangan Internet dan bahasa pengembangan WEB memerlukan penciptaan alat universal dan ringkas untuk memproses informasi teks dengan jumlah kode minimum yang diperlukan untuk ini. Tidak terkecuali bahasa PHP, yang populer di kalangan pemula dan pengembang profesional. Ekspresi reguler sebagai bahasa templat teks memungkinkan Anda menyederhanakan tugas pemrosesan teks dan mengurangi kode program hingga puluhan dan ratusan baris. Banyak masalah yang tidak dapat diselesaikan tanpanya.

Ekspresi reguler di PHP

Bahasa PHP berisi tiga mekanisme untuk bekerja dengan ekspresi reguler - “ereg”, “mb_ereg” dan “preg”. Yang paling umum adalah antarmuka "preg", yang fungsinya menyediakan akses ke perpustakaan ekspresi reguler PCRE, yang awalnya dikembangkan untuk bahasa Perl, yang disertakan dengan PHP. Fungsi preg mencari string teks tertentu untuk menemukan kecocokan berdasarkan pola tertentu dalam bahasa ekspresi reguler.

Dasar-dasar Sintaks

Dalam artikel pendek tidak mungkin untuk menjelaskan secara rinci seluruh sintaksis ekspresi reguler; ada literatur khusus untuk ini. Kami hanya menyajikan elemen utama untuk menunjukkan kemungkinan luas bagi pengembang dan memahami contoh kode.

B secara formal didefinisikan dengan cara yang sangat kompleks, jadi mari kita sederhanakan uraiannya. Ekspresi reguler adalah string teks. Ini terdiri dari pola yang disorot oleh pembatas dan pengubah yang menunjukkan cara memprosesnya. Dimungkinkan untuk memasukkan berbagai alternatif dan pengulangan dalam templat.

Misalnya saja pada ungkapan /\d(3)-\d(2)-\d(2)/m pemisahnya akan menjadi «/» , lalu muncul pola, dan simbol "M" akan menjadi pengubah.

Semua kekuatan ekspresi reguler dikodekan menggunakan metakarakter. Metakarakter utama bahasa ini adalah garis miring terbalik - “\”. Ini membalikkan tipe karakter yang mengikutinya (yaitu, karakter biasa menjadi metakarakter dan sebaliknya). Metakarakter penting lainnya adalah garis miring "|", yang menentukan variasi alternatif pola. Lebih banyak contoh metakarakter:

PHP, saat memproses ekspresi reguler, memperlakukan spasi sebagai karakter penting yang terpisah, sehingga ekspresi ABCWHERE dan ABCWHERE berbeda.

Subpola

Dalam PHP, subpola reguler dipisahkan dengan tanda kurung dan terkadang disebut "subekspresi". Lakukan fungsi berikut:

    Menyoroti Alternatif. Misalnya saja templat panas(sesuatu|burung|) cocok dengan kata-katanya "panas", "burung api" Dan "memanggang". Dan tanpa tanda kurung, itu hanya akan menjadi string kosong, “burung” dan “panggang”.

    Sub-pola "Menyenangkan". Artinya jika substring cocok dengan polanya, maka semua kecocokan akan dikembalikan sebagai hasilnya. Untuk lebih jelasnya, mari kita beri contoh. Diberikan ekspresi reguler berikut: pemenang menerima((emas|disepuh)(medali|piala)) - dan garis untuk menemukan kecocokan: "pemenang mendapat medali emas". Selain frasa asli, hasil pencarian akan mengembalikan: "medali emas", "medali", "emas".

Operator pengulangan (quadrifier)

Saat menulis ekspresi reguler, sering kali perlu menganalisis pengulangan angka dan simbol. Hal ini tidak menjadi masalah jika pengulangannya tidak terlalu banyak. Namun apa yang harus dilakukan jika kita tidak mengetahui jumlah pastinya? Dalam hal ini, Anda harus menggunakan metakarakter khusus.

Untuk menggambarkan pengulangan, digunakan quadrifier - metasimbol untuk menentukan kuantitas. Quadrifier terdiri dari dua jenis:

  • umum, diapit tanda kurung;
  • disingkat.

Pembilang umum menetapkan jumlah minimum dan maksimum pengulangan yang diperbolehkan suatu elemen, dinyatakan sebagai dua angka dalam kurung kurawal, seperti ini: x(2,5). Jika jumlah pengulangan maksimum tidak diketahui, argumen kedua dihilangkan: x(2,).

Penghitung singkatan mewakili simbol untuk pengulangan yang paling umum untuk menghindari kekacauan sintaksis yang tidak perlu. Tiga singkatan yang umum digunakan:

1.* - nol atau lebih pengulangan, yang setara dengan (0,).

2. + - satu atau lebih pengulangan, mis. ,).

3. ? - nol atau hanya satu pengulangan - (0,1).

Contoh ekspresi reguler

Bagi mereka yang mempelajari ekspresi reguler, contoh adalah tutorial terbaik. Kami akan menyajikan beberapa yang menunjukkan kemampuan luas mereka dengan sedikit usaha. Semua kode program sepenuhnya kompatibel dengan PHP versi 4.x dan lebih tinggi. Untuk memahami sintaksis sepenuhnya dan menggunakan semua fitur bahasa, kami merekomendasikan buku J. Friedl “Regular Expressions”, yang membahas sintaksis secara lengkap dan berisi contoh ekspresi reguler tidak hanya di PHP, tetapi juga untuk Python, Perl, MySQL, Java, Ruby dan C#.

Memeriksa kebenaran alamat email

Tugas. Ada halaman Internet yang meminta alamat email pengunjung. Ekspresi reguler harus memeriksa apakah alamat yang diterima sudah benar sebelum mengirim pesan. Pemeriksaan tidak menjamin bahwa kotak surat yang ditentukan benar-benar ada dan menerima surat. Tapi itu bisa menghilangkan alamat yang jelas-jelas salah.

Larutan. Seperti halnya bahasa pemrograman apa pun, ekspresi reguler verifikasi alamat email PHP dapat diimplementasikan dalam beberapa cara, dan contoh dalam artikel ini bukanlah segalanya. Oleh karena itu, dalam setiap kasus, kami akan memberikan daftar persyaratan yang perlu dipertimbangkan saat pemrograman, dan implementasi spesifiknya sepenuhnya bergantung pada pengembang.

Jadi, ekspresi yang memeriksa apakah suatu email valid harus memeriksa kondisi berikut:

  1. Kehadiran simbol @ di string sumber dan tidak adanya spasi.
  2. Bagian domain dari alamat tersebut, diikuti dengan simbol @, hanya berisi karakter yang valid untuk nama domain. Hal yang sama berlaku untuk nama pengguna.
  3. Saat memeriksa nama pengguna, Anda perlu mencari karakter khusus seperti apostrof atau Karakter ini berpotensi berbahaya dan dapat ditemukan dalam serangan seperti injeksi SQL. Hindari alamat seperti itu.
  4. Nama pengguna hanya memperbolehkan satu titik, yang tidak boleh berupa karakter pertama atau terakhir pada baris.
  5. Nama domain harus mengandung setidaknya dua dan tidak lebih dari enam karakter.

Contoh yang memperhitungkan semua kondisi tersebut dapat dilihat pada gambar di bawah ini.

Memeriksa validitas URL

Tugas. Periksa apakah string teks yang diberikan valid Sekali lagi, pemeriksaan URL ekspresi reguler dapat diterapkan dalam berbagai cara.

Larutan. Versi final kami terlihat seperti ini:

/^(https?:\/\/)?([\da-z\.-]+)\.((2,6))([\/\w \.-]*)*\/?$ /

Sekarang mari kita lihat komponen-komponennya lebih detail menggunakan gambar.

Memeriksa nomor kartu kredit

Tugas. Penting untuk memeriksa kebenaran nomor kartu plastik yang dimasukkan untuk sistem pembayaran yang paling umum. Opsi dipertimbangkan hanya untuk kartu

Larutan. Saat membuat ekspresi, Anda harus memperhitungkan kemungkinan adanya spasi pada nomor yang dimasukkan. Angka-angka pada kartu dibagi menjadi beberapa kelompok untuk memudahkan pembacaan dan pendiktean. Oleh karena itu, wajar jika seseorang mencoba memasukkan nomor dengan cara ini (yaitu menggunakan spasi).

Menulis ekspresi universal yang memperhitungkan kemungkinan spasi dan tanda hubung lebih sulit daripada membuang semua karakter kecuali angka. Oleh karena itu, disarankan untuk menggunakan metakarakter /D dalam ekspresi, yang menghapus semua karakter kecuali angka.

Sekarang Anda bisa langsung melanjutkan ke pengecekan nomornya. Semua perusahaan kartu kredit menggunakan format angka unik. Contohnya menggunakan ini, dan klien tidak perlu memasukkan nama perusahaan - itu ditentukan oleh nomornya. Kartu Visa selalu dimulai dengan angka 4 dan memiliki panjang angka 13 atau 16 digit. MasterCard dimulai pada kisaran 51-55 dengan panjang angka 16. Hasilnya, kita mendapatkan ekspresi berikut:

Sebelum memproses pesanan, Anda dapat melakukan pemeriksaan tambahan terhadap digit terakhir nomor tersebut, yang dihitung menggunakan algoritma Luhn.

Memeriksa nomor telepon

Tugas. Memeriksa kebenaran nomor telepon yang dimasukkan.

Larutan. Jumlah digit pada nomor telepon rumah dan ponsel sangat bervariasi dari satu negara ke negara lain, sehingga tidak mungkin untuk memeriksa kebenaran nomor telepon secara universal menggunakan ekspresi reguler. Namun nomor internasional memiliki format yang ketat dan bagus untuk pemeriksaan templat. Terlebih lagi, semakin banyak operator telepon nasional yang berusaha mematuhi satu standar. Struktur bilangannya adalah sebagai berikut:

+CCC.NNNNNNNNNNxEEEE, Di mana:

C adalah kode negara yang terdiri dari 1-3 digit.

N - nomor hingga 14 digit.

E - ekstensi opsional.

Tanda plus adalah elemen wajib, dan tanda x hanya ada jika diperlukan perluasan.

Hasilnya, kita mendapatkan ekspresi berikut:

^\+(1,3)\.(4,14)(?:x.+)?$

Angka dalam jangkauan

Tugas. Anda harus mencocokkan bilangan bulat dalam rentang tertentu. Selain itu, ekspresi reguler harus hanya cocok dengan angka dari rentang nilai.

Larutan. Berikut beberapa ekspresi untuk beberapa kasus yang paling umum:

Menemukan Alamat IP

Tugas. Anda harus menentukan apakah string yang diberikan adalah alamat IP yang valid dalam format IPv4 dalam rentang 000.000.000.000-255.255.255.255.

Larutan. Seperti halnya tugas apa pun di PHP, ekspresi reguler memiliki banyak variasi. Misalnya, ini:

Pemeriksaan ekspresi online

Menguji kebenaran ekspresi reguler mungkin sulit bagi pemrogram baru karena kompleksitas sintaksisnya, yang berbeda dari bahasa pemrograman “biasa”. Untuk mengatasi masalah ini, ada banyak penguji ekspresi online yang memudahkan untuk memeriksa kebenaran template yang dibuat pada teks asli. Pemrogram memasukkan ekspresi dan data yang akan diuji dan langsung melihat hasil pemrosesan. Biasanya terdapat juga bagian referensi yang menjelaskan secara rinci ekspresi reguler, contoh, dan perbedaan implementasi untuk bahasa pemrograman yang paling umum.

Namun mempercayai sepenuhnya hasil layanan online tidak disarankan untuk semua pengembang yang menggunakan PHP. Ekspresi reguler, ditulis dan diuji secara pribadi, meningkatkan keterampilan Anda dan menjamin tidak adanya kesalahan.

Pada artikel hari ini kita akan melihat ekspresi reguler di PHP, dan juga melihat contoh praktis penggunaan ekspresi reguler dalam skrip PHP.

Dasar-dasar Ekspresi Reguler di PHP

Pada awal kemunculan ekspresi reguler, mereka ditugaskan untuk membantu bekerja dengan string dalam sistem Unix. Kemudian mereka mulai digunakan secara aktif tidak hanya di sistem lain, tetapi juga dalam berbagai bahasa pemrograman.

Dalam PHP, ekspresi reguler digunakan untuk mengurai teks menurut pola tertentu. Dengan menggunakan ekspresi reguler, Anda dapat dengan mudah menemukan teks yang diinginkan dalam string menggunakan pola, dan menggantinya jika perlu, atau cukup memeriksa keberadaan teks tersebut.

Jenis Ekspresi Reguler

Ada 2 jenis ekspresi reguler:

  • Kompatibel dengan Perl
  • POSIX diperpanjang

Fungsi yang kompatibel dengan Perl seperti preg_match , preg_replace , dan versi POSIX seperti ereg , eegi . Harap dicatat bahwa fitur terakhir tidak digunakan lagi di PHP 5.3.0 dan telah dihapus di . Oleh karena itu, kami hanya akan menggunakan fungsi yang kompatibel dengan Perl. Penting untuk diketahui bahwa saat menggunakan ekspresi reguler yang kompatibel dengan Perl, ekspresi tersebut harus dikelilingi oleh pembatas seperti garis miring (/).

Sintaks ekspresi reguler dasar di PHP

Untuk menggunakan ekspresi reguler, Anda perlu mempelajari sintaksis pola terlebih dahulu. Kita dapat mengelompokkan karakter dalam pola seperti ini:

  • Karakter biasa yang mengikuti satu sama lain, misalnya halo
  • Indikator awal dan akhir suatu garis berupa ^ dan $
  • Menghitung indikator seperti + , * , ?
  • Operator logika seperti |
  • Operator pengelompokan seperti () , () ,

Contoh pola ekspresi reguler untuk memeriksa validitas alamat email adalah sebagai berikut:

Kode PHP untuk memvalidasi email menggunakan ekspresi reguler yang kompatibel dengan Perl adalah sebagai berikut:

Sekarang mari kita lihat analisis mendetail tentang sintaks pola untuk ekspresi reguler:

Ekspresi reguler (pola) Lulus pemeriksaan (objek) Verifikasi gagal (objek) Komentar
dunia Halo Dunia Halo Ivan Lulus jika polanya ada di mana saja pada objek
^dunia kelas dunia Halo Dunia Lulus jika polanya ada di awal objek
dunia$ Halo Dunia kelas dunia Lulus jika polanya ada di ujung objek
dunia/saya Dunia ini Halo Ivan Melakukan pencarian dalam mode peka huruf besar-kecil
^dunia$ dunia Halo Dunia Baris tersebut hanya berisi "dunia"
dunia* dunia, dunia, duniadd dunia Ada 0 atau lebih huruf "d" setelah "dunia"
dunia+ dunia, duniadd dunia Setidaknya ada satu "d" setelah "dunia"
dunia? dunia, dunia, yang terburuk duh, khawatir Ada 0 atau 1 "d" setelah "dunia"
dunia(1) dunia Sangat mengkhawatirkan Ada satu "d" setelah "dunia"
dunia(1,) dunia, duniadd Sangat mengkhawatirkan Ada satu atau lebih "d" setelah "dunia"
dunia(2,3) dunia, duniadd dunia Ada 2 atau 3 "d" setelah "dunia"
dunia)* wo, dunia, kuno wa Ada 0 atau lebih "rld" setelah "wo"
bumi|dunia bumi, dunia matahari String tersebut berisi "bumi" atau "dunia"
w.rld dunia, dunia dunia Berisi karakter apa pun, bukan titik
^.{5}$ dunia, bumi matahari String berisi tepat 5 karakter
abc, bbcc matahari String berisi "a" atau "b" atau "c"
dunia DUNIA String berisi huruf kecil apa pun
dunia, DUNIA, Dunia12 123 String berisi huruf kecil atau huruf besar apa pun
[^wW] bumi w, W Karakter sebenarnya tidak boleh "w" atau "W"

Sekarang mari beralih ke ekspresi reguler yang lebih kompleks dengan penjelasan mendetail.

Contoh praktis dari ekspresi reguler kompleks

Sekarang setelah Anda mengetahui teori dan sintaks dasar ekspresi reguler di PHP, sekarang saatnya membuat dan menganalisis beberapa contoh yang lebih kompleks.

1) Memvalidasi nama pengguna menggunakan ekspresi reguler
Mari kita mulai dengan memeriksa nama pengguna. Jika Anda memiliki formulir pendaftaran, Anda perlu memeriksa apakah nama pengguna sudah benar. Katakanlah Anda tidak ingin ada karakter khusus pada nama selain "_.-" dan tentu saja nama tersebut harus mengandung huruf dan mungkin angka. Selain itu, Anda mungkin perlu mengontrol panjang nama pengguna, misalnya 4 hingga 20 karakter.

Pertama kita perlu menentukan simbol yang tersedia. Ini dapat diimplementasikan menggunakan kode berikut:

Setelah itu, kita perlu membatasi jumlah karakter dengan kode berikut:

Sekarang mari kita gabungkan ekspresi reguler ini:

^{4,20}$

Untuk ekspresi reguler yang kompatibel dengan Perl, sertakan dengan karakter ' / '. Kode PHP terakhir terlihat seperti ini:

2) Memeriksa kode warna hex dengan ekspresi reguler
Kode warna heksadesimal adalah #5A332C, namun bentuk pendek seperti #C5F juga dapat diterima. Dalam kedua kasus tersebut, kode warna dimulai dengan # dan kemudian muncul tepat 3 atau 6 angka atau huruf A sebelum F.

Jadi, mari kita periksa bagian awal kodenya:

^#

Kemudian kami memeriksa rentang karakter yang valid:

Setelah ini, kami memeriksa panjang kode yang diperbolehkan (bisa 3 atau 6). Kode ekspresi reguler lengkapnya akan terlihat seperti ini:

^#(({3}$)|({6}$))

Di sini kita menggunakan operator Boolean untuk terlebih dahulu memeriksa kode seperti #123 dan kemudian kode seperti #123456 . Kode PHP terakhir untuk pemeriksaan dengan ekspresi reguler terlihat seperti ini:

3) Validasi email klien menggunakan ekspresi reguler
Sekarang mari kita lihat bagaimana kita dapat memvalidasi alamat email menggunakan ekspresi reguler. Pertama, perhatikan baik-baik contoh alamat email berikut:

[dilindungi email] [dilindungi email] [dilindungi email]

Seperti yang bisa kita lihat, simbol @ adalah elemen wajib dalam alamat email. Selain itu, harus ada kumpulan karakter tertentu sebelum dan sesudah elemen ini. Lebih tepatnya harus diikuti dengan nama domain yang valid.

Jadi bagian pertama harus berupa string dengan huruf, angka, atau beberapa karakter khusus seperti _-. . Di template kita bisa menulisnya seperti ini:

^+

Nama domain selalu memiliki, katakanlah, nama dan tld ( domain tingkat atas) – yaitu, zona domain. Zona domainnya adalah .com, .ua, .info dan sejenisnya. Artinya, pola ekspresi reguler untuk domain tersebut akan terlihat seperti ini:

+\.{2,5}$

Sekarang, jika kita menggabungkan semuanya, kita mendapatkan pola ekspresi reguler lengkap untuk memvalidasi alamat email:

^+@+\.{2,5}$

Dalam kode PHP pemeriksaan ini akan terlihat seperti ini:

Kami berharap artikel hari ini membantu Anda mengenal ekspresi reguler di PHP, dan contoh praktisnya akan berguna bagi Anda saat menggunakan ekspresi reguler di skrip PHP Anda sendiri.

Campuran preg_match(pola string, subjek string [, array & kecocokan [, int flags [, int offset]]])

Mencari kecocokan subjek teks tertentu dengan pola pola

Jika parameter kecocokan tambahan ditentukan, maka akan diisi dengan hasil pencarian. Elemen $matches akan berisi bagian string yang cocok dengan keseluruhan pola, $matches akan berisi bagian string yang cocok dengan subpola pertama, dan seterusnya.

flag dapat mengambil nilai berikut:

PREG_OFFSET_CAPTURE

Jika tanda ini ditentukan, untuk setiap substring yang ditemukan, posisinya dalam string sumber akan ditunjukkan. Penting untuk diingat bahwa tanda ini mengubah format data yang dikembalikan: setiap kejadian dikembalikan sebagai array, elemen ke nol berisi substring yang ditemukan, dan elemen pertama berisi offset. Bendera ini tersedia dalam PHP 4.3.0 dan lebih tinggi.

Parameter flag tambahan tersedia sejak PHP 4.3.0.

Pencarian dilakukan dari kiri ke kanan, dari awal baris. Parameter offset opsional dapat digunakan untuk menentukan posisi awal alternatif untuk pencarian. Parameter offset tambahan tersedia sejak PHP 4.3.3.

Komentar: Menggunakan parameter offset tidak sama dengan mengganti string yang cocok dengan substr($subject, $offset) saat memanggil fungsi preg_match_all(), karena pola mungkin berisi kondisi seperti ^ , $ atau (? . Membandingkan:

Sedangkan contoh ini

Fungsi preg_match() mengembalikan jumlah kecocokan yang ditemukan. Bisa 0 (tidak ditemukan kecocokan) dan 1 karena preg_match() berhenti bekerja setelah kecocokan pertama ditemukan. Jika Anda perlu mencari atau menghitung semua kecocokan, Anda harus menggunakan fungsi tersebut preg_match_all(). Fungsi preg_match() kembali PALSU jika terjadi kesalahan saat eksekusi.

Petunjuk: Jangan gunakan fungsinya preg_match(), jika Anda perlu memeriksa keberadaan substring dalam string tertentu. Gunakan untuk ini strpos() atau strstr(), karena mereka akan menyelesaikan tugas ini lebih cepat.


Contoh 2. Pencarian kata "web" dalam teks

/*
Urutan khusus \b dalam pola berarti batas kata,
oleh karena itu, hanya kemunculan kata "web" yang terisolasi yang akan cocok
topeng, bukan "anyaman" atau "sarang laba-laba".
*/
jika (preg_match("/\bweb\b/i" , "PHP adalah bahasa skrip web pilihan.")) {
gema "Entri ditemukan.";
) kalau tidak (
gema "Tidak ada entri yang ditemukan.";
)preg_match("/\bweb\b/i" , "PHP adalah bahasa skrip situs web pilihan.")) {
gema "Entri ditemukan.";
) kalau tidak (
gema "Tidak ada entri yang ditemukan.";
}
?>