Tanda Sempang dalam Set Tanda Kurung Segi dalam Ungkapan Biasa PHP
Tanda sempang - juga aksara khas dalam []
(tetapi di luar - tidak). Jika anda memerlukan tanda sempang
itu sendiri sebagai aksara - letakkannya di mana
ia tidak akan difahami sebagai pemisah
kumpulan.
Mengapa ini penting: anda mungkin membuat kumpulan
aksara tanpa menyedarinya. Sebagai contoh,
seperti ini - [:-@] - anda fikir anda
memilih tanda titik bertindih, tanda sempang dan tanda @,
tetapi sebenarnya yang terhasil ialah kumpulan aksara antara
: dan @. Kumpulan ini merangkumi
aksara berikut: :, ;, ?,
<, =, >.
Dari mana asalnya? Dari jadual ASCII - tanda titik bertindih mempunyai nombor yang lebih kecil daripada tanda @ - dan terhasilnya kumpulan. Iaitu semua kumpulan terhasil mengikut jadual ASCII (jika mahu, ini boleh digunakan).
Bagaimana menanganinya: letakkan aksara tanda sempang
di mana ia pasti tidak akan difahami sebagai
aksara kumpulan, contohnya, pada permulaan atau pada akhir
(iaitu selepas [ atau sebelum ]).
Anda juga boleh melarikan tanda sempang - maka
ia akan mewakili dirinya sendiri tanpa mengira
kedudukan. Contohnya, gantikan [:-@] dengan
[:\-@] - dan kumpulan sudah tidak wujud,
sebaliknya terdapat tiga aksara - tanda titik bertindih, tanda sempang dan tanda @.
Contoh
Dalam contoh berikut, corak carian adalah seperti berikut:
nombor 1, kemudian huruf dari 'a'
hingga 'z', kemudian nombor 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! 1-2 ! !'
Contoh
Sekarang mari kita lari tanda sempang. Hasilnya
corak carian adalah seperti berikut: nombor 1, kemudian
huruf 'a', atau tanda sempang, atau huruf 'z',
kemudian nombor 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ! 1c2 !'
Contoh
Anda boleh hanya mengubah kedudukan tanda sempang, tanpa melarikan nya:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ! 1c2 !'
Contoh
Dalam contoh berikut, corak carian adalah seperti berikut:
aksara pertama - ialah huruf kecil atau
tanda sempang '-', kemudian dua huruf 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! Axx ! @xx'
Contoh
Dalam contoh berikut, corak carian adalah seperti berikut:
aksara pertama - ialah huruf kecil, huruf besar
atau tanda sempang '-', kemudian dua huruf
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ! ! @xx'
Contoh
Anda boleh meletakkan tanda sempang antara dua kumpulan - di sana ia pasti tidak akan membuat satu kumpulan lagi:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ! ! @xx'
Tugas Praktikal
Diberi rentetan:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Cari semua rentetan mengikut corak berikut:
huruf 'x', huruf besar atau huruf kecil
atau tanda sempang, huruf 'z'.
Diberi rentetan:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Cari semua rentetan mengikut corak berikut:
huruf 'x', kemudian tanda dolar, atau
tanda sempang atau tanda tambah, kemudian huruf 'z'.