Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci)

Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci)

WBOY
WBOYasal
2021-11-01 11:20:155816semak imbas

Dalam artikel sebelum ini, saya membawakan anda "Asas ungkapan biasa yang menarik dalam PHP (ilustrasi terperinci) ", yang memperkenalkan secara ringkas beberapa ungkapan biasa, dalam artikel ini kami akan meneruskan untuk melihat beberapa fungsi umum ungkapan biasa saya harap ia akan membantu semua orang!

Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci)

Dalam artikel sebelum ini, kami memperkenalkan beberapa definisi asas ungkapan biasa dan aplikasi asas fungsi preg_match() Tujuan utama menggunakan ungkapan biasa adalah untuk lulus Mudah cara untuk mencapai fungsi yang berkuasa. Untuk menjadi mudah, berkesan dan berkuasa, peraturan ungkapan biasa adalah rumit, malah lebih sukar untuk membina ungkapan biasa yang betul dan berkesan, jadi menggunakan hanya satu fungsi preg_match() tidak mencukupi.

Ekspresi biasa ialah teknik penting dan kompleks semasa memproses data teks. Sesetengah editor teks juga menggunakan ungkapan biasa untuk melaksanakan fungsi "cari/ganti" peringkat tinggi. Jika anda ingin melaksanakan lebih banyak fungsi, anda perlu mengetahui lebih banyak fungsi Seterusnya, mari kita lihat lebih banyak pengetahuan fungsi tentang ungkapan biasa.

<strong><span style="font-size: 18px;">preg_match_all()</span></strong><strong><span style="font-size: 18px;"></span></strong>Fungsi

Sebelum kami hanya memperkenalkan fungsi asas preg_match() , terdapat juga fungsi dan The preg_match() sangat serupa dengan fungsi - preg_match_all() Fungsi ini boleh mencari semua hasil dalam rentetan yang boleh sepadan dengan ungkapan biasa.

Format sintaks fungsi ini adalah seperti berikut:

preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])

Perlu diambil perhatian bahawa:

$pattern mewakili corak yang akan dicari, iaitu, ditakrifkan Ungkapan biasa; $subject mewakili rentetan yang akan dicari; > mewakili parameter pilihan $matches digunakan untuk mula mencari dari kedudukan yang ditentukan dalam rentetan sasaran. $flags $offset$flags mewakili parameter pilihan, yang boleh digunakan dalam kombinasi dengan teg berikut, $offset

    PREG_PATTERN_ORDER
  • <strong>PREG_PATTERN_ORDER</strong>

  • Hasil diisih sebagai $matches[0] memegang semua padanan corak lengkap, $matches[1] memegang semua padanan subkumpulan pertama dan seterusnya.

  • PREG_SET_ORDER

    <strong>PREG_SET_ORDER</strong>

Keputusan diisih mengikut $match[0] termasuk kali pertama Memadankan semua perlawanan (termasuk subkumpulan) yang diperoleh, $matches[1] ialah tatasusunan yang mengandungi semua padanan (termasuk subkumpulan) yang diperolehi oleh perlawanan kedua, dan seterusnya.

  • PREG_OFFSET_CAPTURE<strong>PREG_OFFSET_CAPTURE</strong>

Jika teg ini diluluskan, setiap perlawanan yang ditemui dikembalikan akan tingkatkan offsetnya berbanding rentetan sasaran. Ambil perhatian bahawa ini akan menukar setiap elemen rentetan hasil yang sepadan dalam $matches supaya ia menjadi rentetan hasil yang sepadan dengan elemen ke-0 dan mengimbangi rentetan hasil yang sepadan dalam subjek sebagai elemen pertama.

di mana PREG_PATTERN_ORDER dan PREG_SET_ORDER tidak boleh digunakan pada masa yang sama, fungsi preg_match_all() boleh mengembalikan bilangan padanan untuk $pattern (mungkin 0), atau FALSE jika ralat berlaku.

Seterusnya mari kita lihat aplikasi fungsi preg_match_all() melalui contoh untuk memadankan rentetan Contohnya adalah seperti berikut:

<?php
    $subject = "abcdefghijkdefabcedfdefxyzdef";
    $pattern_1 = &#39;/(def)(abc)/&#39;;
    $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER);
    echo "<pre class="brush:php;toolbar:false">";
    var_dump($matches_1);
    var_dump($num_1);
    $pattern_2 = &#39;/(def)(abc)/&#39;;
    $num_2 = preg_match_all($pattern_2, $subject, $matches_2,PREG_OFFSET_CAPTURE, 3);
    var_dump($matches_2);
    var_dump($num_2);
?>

Hasil keluaran:

. Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci)

Daripada contoh di atas, kami telah menyelesaikan pemadanan rentetan melalui fungsi preg_match_all(). Padanan ungkapan biasa global boleh diselesaikan melalui aplikasi fungsi preg_match_all().

Kemudian mari kita lihat cara untuk mengesan elemen tatasusunan yang sepadan dengan corak tertentu. Ini adalah apabila fungsi preg_grep() digunakan.

<code><strong><span style="font-size: 18px;">preg_grep() </span></strong>preg_grep()

Fungsi

preg_grep($pattern, $input [, $flags = 0 ])

Gunakan ungkapan biasa Selain padanan rentetan, formula juga boleh memadankan elemen dalam tatasusunan. Fungsi preg_grep() dalam PHP boleh mencari semua elemen dalam tatasusunan dan mengembalikan tatasusunan semua elemen yang sepadan dengan ungkapan biasa. Format sintaks fungsi ini adalah seperti berikut:

Apa yang perlu diberi perhatian ialah:

$pattern表示要搜索的模式,也就是定义好的正则表达式;$input表示要搜索的数组;$flags表示可选参数,可以设置为 PREG_GREP_INVERT,这时函数会返回数组中与给定模式 $pattern 不匹配的元素组成的数组。perg_grep() 函数将遍历 $input 数组中的每一个元素,让该元素与模式 $pattern 进行匹配,然后将匹配成功或者匹配失败的元素返回。

接下来,我们通过示例来看一下使用 perg_grep() 函数匹配数组中的元素,示例如下:

<?php
    $test_arr = array(
        &#39;PHP中文网&#39;,
        &#39;http://www.php.cn/&#39;,
        &#39;php教程&#39;,
        &#39;abcdefg&#39;
    );
    $preg = &#39;/^[a-z]/&#39;;
    $preg_arr_1 = preg_grep($preg, $test_arr);
    $preg_arr_2 = preg_grep($preg, $test_arr, PREG_GREP_INVERT);
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($preg_arr_1);
    var_dump($preg_arr_2);
?>

输出结果:

Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci)

上述示例便是通过preg_grep() 函数匹配数组中的元素。

大家如果感兴趣的话,可以点击《PHP视频教程》、《正则表达式手册》进行更多关于PHP和正则表达式知识的学习。

Atas ialah kandungan terperinci Padanan ungkapan biasa global dan elemen tatasusunan yang sepadan dalam PHP (contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn