国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Pengubah suai corak dalam ungkapan biasa php

Kami telah melengkapkan pengenalan kepada ungkapan ungkapan biasa melalui metakarakter dan atom. Terdapat beberapa situasi istimewa yang masih perlu kita hadapi.

Bagaimana untuk memadankan jika abc berada di permulaan baris kedua?
Saya tidak mahu ungkapan biasa menjadi sangat tamak dalam memadankan semua, apakah yang perlu saya lakukan jika ia hanya sepadan dengan sebahagian daripadanya?

Pada masa ini, kita perlu menggunakan padanan corak berikut untuk meningkatkan fungsi biasa.

Watak padanan corak yang biasa digunakan ialah:

模式匹配符功能
i模式中的字符將同時(shí)匹配大小寫字母.
m字符串視為多行
s將字符串視為單行,換行符作為普通字符.
x將模式中的空白忽略.
A強(qiáng)制僅從目標(biāo)字符串的開頭開始匹配.
D模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾.
U匹配最近的字符串.
Penggunaan

watak padanan corak adalah seperti berikut:

/ Ungkapan ekspresi biasa/Watak padanan corak Watak padanan corak

diletakkan di hujung ayat ini. Contohnya:

/w+/s

Kami tahu formatnya dengan jelas Perkara paling penting seterusnya ialah mengukuhkan pemahaman dan ingatan penggunaan aksara padanan corak . Kami menggunakan kod untuk memahami perbezaan antara menambah dan tidak menambah padanan corak.

i tidak sensitif huruf besar kecil

<?php //在后面加上了一個(gè)i 
    $pattern = '/ABC/i'; 
$string = '8988abc12313';
$string1 = '11111ABC2222'; 
if(preg_match($pattern, $string, $matches)){
     echo '匹配到了,結(jié)果為:'; 
    var_dump($matches); }else{
     echo '沒有匹配到';
     }
 ?>

Kesimpulan, kedua-dua $string dan $string1 telah berjaya dipadankan. Oleh itu, selepas menambah i pada akhir, kes kandungan yang sepadan boleh diabaikan.

m dianggap sebagai berbilang baris

Apabila dipadankan dengan ungkapan biasa, rentetan sasaran yang akan dipadankan biasanya dianggap sebagai satu baris.

Metacharacter "start of line" (^) hanya sepadan dengan permulaan rentetan dan metacharacter "end of line" ($) hanya padan dengan hujung rentetan.

Apabila pengubah suai ini ditetapkan, "permulaan baris" dan "penghujung baris" bukan sahaja sepadan dengan permulaan dan penghujung keseluruhan rentetan, tetapi juga sepadan selepas dan sebelum aksara baris baharu di dalamnya.

Nota: Jika tiada aksara "n" dalam rentetan yang hendak dipadankan atau tiada ^ atau $ dalam corak, tetapan pengubah suai ini tidak mempunyai kesan.

Mari sahkan ciri ini melalui percubaan dan kod:

Untuk perlawanan pertama, anda akan mendapati bahawa perlawanan itu tidak berjaya:

<?php
$pattern = '/^a\d+/';
$string = "我的未來(lái)在自己手中我需要不斷的努力
a9是一個(gè)不錯(cuò)的字符表示
怎么辦呢,其實(shí)需要不斷奮進(jìn)";
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒有匹配到';
}
?>

Untuk perlawanan kedua, Mari cuba tambah m:

<?php
$pattern = '/^a\d+/m';
$string = "我的未來(lái)在自己手中我需要不斷的努力
a9是一個(gè)不錯(cuò)的字符表示
怎么辦呢,其實(shí)需要不斷奮進(jìn)";
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒有匹配到';
}
?>

Keputusan:

QQ截圖20161114141159.png

Oh ya! Perlawanan itu berjaya. /^ad+/ Kandungan yang dipadankan ialah a9, yang mesti berada di permulaan baris. Baris kedua juga berjaya dipadankan.

s dikenali sebagai garis

Jika pengubah suai ini ditetapkan, metakarakter titik (.) dalam corak sepadan dengan semua aksara , termasuk baris baharu.

Kali pertama, tiada aksara padanan corak s ditambahkan:

<?php

$pattern = '/新的未來(lái).+\d+/';

$string = '新的未來(lái)
987654321';

if (preg_match($pattern, $string, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒有匹配到';
}

?>

Kali kedua, aksara padanan corak s ditambah selepas ungkapan biasa:

<?php

$pattern = '/新的未來(lái).+\d+/s';

$string = "新的未來(lái)
987654321";

if (preg_match($pattern, $string, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒有匹配到';
}

?>

Hasilnya adalah seperti berikut, Perlawanan berjaya!

QQ截圖20161114141235.png

Kesimpulan:

1. Kerana pada masa hadapan yang baru, terdapat pemecahan baris selepas masa hadapan

2. Dan (titik ) ialah Padanan semua aksara kecuali aksara bukan ruang putih. Oleh itu, kali pertama tidak berjaya

3. Kali kedua, padanan corak s telah ditambah. Kerana, selepas menambah . (titik), ia boleh memadankan semua aksara.

x Abaikan aksara ruang putih

1. Jika pengubah suai ini ditetapkan, semua aksara ruang kosong dalam corak akan kecuali aksara yang terlepas atau dalam kelas aksara.

2. Watak antara # watak di luar kelas watak yang tidak dilepaskan dan watak baris baharu seterusnya juga diabaikan.

Mari kita percubaan pertama dengan ciri seperti mengabaikan baris kosong:

<?php

$pattern = '/a b c /x';

$string = '學(xué)英語(yǔ)要從abc開始';

if (preg_match($pattern, $string, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒有匹配到';
}

?>

Ini juga boleh dipadankan dengan jayanya.

QQ截圖20161114141325.png

Terdapat ruang dalam $pattern, dan terdapat ruang selepas setiap abc. Tiada ruang dalam $string.
Jadi x mengabaikan aksara ruang putih.

Ayat kedua lebih sukar untuk difahami secara literal,

<?php
//重點(diǎn)觀察這一行
$pattern = '/a b c #我來(lái)寫一個(gè)注釋
/x';

$string = '學(xué)英語(yǔ)要從abc開始';

if (preg_match($pattern, $string, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒有匹配到';
}

?>

Hasilnya juga perlawanan yang berjaya!

QQ截圖20161114141359.png

Kami mendapati bahawa ciri kedua bagi x ialah ia diabaikan: aksara antara watak # dan watak baris baharu seterusnya juga diabaikan.

e Cari item yang sepadan dan gantikannya

  • e corak juga dipanggil rujukan terbalik. Fungsi utama adalah untuk mengeluarkan kandungan dalam kurungan ungkapan biasa dan memasukkannya ke dalam item gantian untuk menggantikan rentetan asal.

  • Preg_replace() mesti digunakan sebelum menggunakan padanan corak ini.

campuran preg_replace (campuran $perlawanan biasa, campuran $gantian, campuran $carian rentetan)

  • Fungsi preg_replace: gunakan $item padanan biasa untuk mencari pembolehubah rentetan $cari. Kemudian gunakan pembolehubah $replacement untuk menggantikannya.

Sebelum penjelasan rasmi, mari kita semak semula pengetahuan sebelumnya Kami sengaja meletakkan tanda kurung di sekeliling setiap atom untuk dipadankan:

<?php
//加上了括號(hào)
$pattern = '/(\d+)([a-z]+)(\d+)/';

$string = '987abc321';

if (preg_match($pattern, $string, $match)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($match);

} else {
   echo '沒有匹配到';
}
?>

Mari kita lihat Keputusan:

QQ截圖20161114141456.png

Ini apabila kita bercakap tentang kurungan sebelum ini: terdapat kurungan di luar kandungan yang dipadankan. Kandungan dalam kurungan juga akan diletakkan ke dalam elemen tatasusunan. Seperti yang ditunjukkan dalam gambar: 987, abc, 321.

Mari kita lihat corak e dalam ungkapan ungkapan biasa:

<?php
$string = "{April 15, 2003}";

//'w'匹配字母,數(shù)字和下劃線,'d'匹配0-99數(shù)字,'+'元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)一次或多次
$pattern = "/{(\w+) (\d+), (\d+)}/i";

$replacement = "$2";

//字符串被替換為與第 n 個(gè)被捕獲的括號(hào)內(nèi)的子模式所匹配的文本
echo preg_replace($pattern, $replacement, $string);

?>

Mari kita lihat hasil pelaksanaan:

QQ截圖20161114141532.png

Kesimpulan:

Dalam contoh di atas, $2 mata kepada yang pertama (d+) yang diwakili oleh ungkapan biasa. Ia bersamaan dengan mengeluarkan 15 lagi

Apabila menggantikannya, saya menulis $2. Item padanan dikeluarkan dan digunakan untuk menggantikan hasil padanan semula.

Kawalan mod U Greedy

Ekspresi biasa adalah tamak secara lalai, iaitu memadankan sebanyak mungkin.

Mari kita lihat betapa tamaknya ungkapan biasa itu:

<?php
$pattern = '/<div>.*<\/div>/';

$string = "<div>你好</div><div>我是</div>";

if (preg_match($pattern, $string, $match)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($match);
} else {
   echo '沒有匹配到';
}

?>

Mari kita lihat hasilnya dan dapatkan kesimpulan berikut. Ia sepadan secara langsung daripada "

Hello" kepada "Saya

". Padanan maksimum telah dibuat.

QQ截圖20161114141617.png

Mari tambah huruf besar U pada sekeping kod yang sama dan lihat kesannya:

<?php
$pattern = '/<div>.*<\/div>/U';

$string = "<div>你好</div><div>我是</div>";

if (preg_match($pattern, $string, $match)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($match);
} else {
   echo '沒有匹配到';
}

?>

QQ截圖20161114141652.png

Kami mendapati hanya perlawanan yang keluar:

rreee

seperti ini, membatalkan ciri-ciri tamak ketetapan. Biarkan ia mencari padanan terdekat dan ia OK.

A padanan

bermula dari permulaan rentetan sasaran Corak ini serupa dengan kesan ^ (circumflex) dalam aksara meta.

<div>你好</div>

Kesimpulan:

1. Jika $string tidak boleh dipadankan semasa menambah pengubah mod A, ia boleh dipadankan tanpa menambahkannya

2. Jika A ditambah Apabila menggunakan pengubah suai corak, $string1 boleh dipadankan, kerana ia mesti mula memadankan dari awal

D tiada pemulangan pengangkutan

selepas tamat daripada simbol $

Jika pengubah suai ini ditetapkan, metakarakter dolar dalam corak hanya sepadan dengan hujung rentetan sasaran. Tanpa pilihan ini, tanda dolar juga akan sepadan sebelum aksara terakhir jika ia adalah aksara baris baharu.

<?php

$pattern = '/this/A';

$string = 'hello this is a ';
//$string1 = 'this is a ';

if (preg_match($pattern, $string, $match)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($match);
} else {
   echo '沒有匹配到';
}

?>

Kesimpulan:

1. Contohnya, apabila corak sepadan dengan $string, terdapat pemulangan gerabak selepas rentetan $string ini. Ia juga boleh memadankan dengan jayanya tanpa menambah aksara padanan D

2. Contohnya, apabila corak sepadan dengan $string, D ditambah. Terdapat ruang selepas rentetan ini dalam $string, dan perlawanan itu tidak berjaya.


Meneruskan pembelajaran
||
<?php $pattern = '/this/A'; $string = 'hello this is a '; //$string1 = 'this is a '; if (preg_match($pattern, $string, $match)) { echo '匹配到了,結(jié)果為:'; var_dump($match); } else { echo '沒有匹配到'; } ?>