Pandangan Hadapan dalam Regex PHP
Kadang-kadang perlu menyelesaikan masalah seperti ini: cari
tali 'aaa' dan gantikannya dengan '!',
tetapi hanya jika selepas 'aaa' terdapat
'x', dan 'x' itu sendiri
tidak diganti. Jika kita cuba menyelesaikan masalah
ini secara terus, kita tidak akan berjaya:
<?php
preg_replace('#aaax#', '!', 'aaax'); // akan jadi '!', sepatutnya '!x'
?>
Untuk menyelesaikan masalah, diperlukan cara untuk menyatakan,
bahawa 'x' tidak boleh diganti. Ini dilakukan
dengan menggunakan kurungan khas (?= ),
yang hanya melihat, tetapi tidak mengambil bersama.
Kurungan ini dipanggil pandangan hadapan
positif. Positif - kerana 'x'
(dalam kes kita) mesti hadir - hanya kemudian
penukaran akan berlaku.
Mari gunakan kurungan ini untuk menyelesaikan masalah kita:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // mengembalikan '!x'
?>
Terdapat juga pandangan hadapan negatif
- (?! ) - ia, sebaliknya, menyatakan
bahawa sesuatu tidak seharusnya hadir. Dalam contoh berikut
penukaran akan berlaku, hanya jika selepas 'aaa'
tidak terdapat 'x':
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // mengembalikan '!b'
?>
Diberi satu tali yang mengandungi nama fungsi:
<?php
$str = 'func1() func2() func3()';
?>
Dapatkan array nama fungsi dari tali tersebut.
Diberi satu tali dengan tag:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
Dapatkan array nama atribut untuk tag ini.