Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ungkapan Biasa PHP: Bagaimana untuk mengekstrak berbilang subrentetan daripada rentetan

Ungkapan Biasa PHP: Bagaimana untuk mengekstrak berbilang subrentetan daripada rentetan

WBOY
WBOYasal
2023-06-23 08:38:581247semak imbas

Dalam PHP, ungkapan biasa ialah alat padanan rentetan yang biasa digunakan. Melalui ungkapan biasa, kami boleh mengekstrak maklumat yang diperlukan dengan mudah daripada rentetan. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengekstrak berbilang subrentetan daripada rentetan.

  1. fungsi preg_match_all
    PHP menyediakan fungsi preg_match_all, yang boleh digunakan untuk mencari semua subrentetan yang sepadan dengan corak tertentu dalam rentetan. Sintaks fungsi ini ialah:
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);

di mana $pattern mewakili ungkapan biasa yang perlu dipadankan, $string mewakili rentetan yang perlu dipadankan dan $matches ialah tatasusunan yang digunakan untuk menyimpan semua hasil sepadan. $flags mewakili bendera perlawanan, yang boleh menjadi PREG_PATTERN_ORDER atau PREG_SET_ORDER. $offset mewakili kedudukan permulaan padanan, yang lalai kepada 0.

Berikut ialah contoh khusus Katakan kita perlu memadankan semua nombor daripada rentetan:

$str = 'abc123def456ghi789jkl';
preg_match_all('/d+/', $str, $matches);
print_r($matches[0]);

Hasil keluarannya ialah:

Array
(
    [0] => 123
    [1] => 456
    [2] => 789
)

Seperti yang dapat dilihat daripada hasilnya. , Dalam tatasusunan $matches yang dikembalikan oleh fungsi preg_match_all, elemen pertama mewakili hasil yang dipadankan dengan keseluruhan ungkapan biasa, dan elemen seterusnya mewakili hasil yang sepadan dengan setiap kurungan dalam ungkapan biasa.

  1. Pengumpulan Kurungan
    Dalam ungkapan biasa, kita boleh menggunakan kurungan untuk mengumpulkan kandungan yang perlu dipadankan. Sebagai contoh, kita boleh menggunakan kurungan untuk memisahkan nombor dan huruf yang perlu dipadankan, dan kemudian memadankannya secara berasingan:
$str = 'abc123def456ghi789jkl';
preg_match_all('/([a-z]+)(d+)/', $str, $matches);
print_r($matches);

Hasil keluarannya ialah:

Array
(
    [0] => Array
        (
            [0] => abc123
            [1] => def456
            [2] => ghi789
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghi
        )

    [2] => Array
        (
            [0] => 123
            [1] => 456
            [2] => 789
        )

)

Seperti yang boleh dilihat daripada hasil, dalam tatasusunan $matches Elemen pertama ialah hasil padanan keseluruhan ungkapan biasa, dan elemen berikut sepadan dengan hasil padanan setiap kurungan dalam ungkapan biasa. Dengan cara ini, kita boleh mengekstrak berbilang subrentetan dengan mudah daripada rentetan itu.

  1. Mod tidak tamak
    Secara lalai, ungkapan biasa akan dipadankan dalam mod tamak, yang bermaksud memadankan seberapa banyak aksara yang mungkin. Sebagai contoh, untuk rentetan "aabbcc", kami berharap untuk memadankan "aa" dan "bb". bukan apa yang kami jangkakan "aa" dan "bb".

Untuk menyelesaikan masalah ini, kita boleh menggunakan mod tidak tamak, yang sepadan dengan sesedikit mungkin aksara. Dalam ungkapan biasa, gunakan tanda soal untuk menunjukkan corak yang tidak tamak. Contohnya, untuk memadankan "aa" dan "bb" dalam contoh di atas, anda akan menggunakan ungkapan biasa "/a.+?b/".

$str = 'aabbcc';
preg_match_all('/a.+?b/', $str, $matches);
print_r($matches[0]);

Hasil keluarannya ialah:

Array
(
    [0] => aa
    [1] => bb
)

Seperti yang dapat dilihat daripada keputusan, mod tidak tamak boleh membantu kami memadankan hasil yang kami perlukan dengan tepat.

Ringkasan
Artikel ini menerangkan cara menggunakan ungkapan biasa PHP untuk mengekstrak berbilang subrentetan daripada rentetan. Melalui fungsi preg_match_all, kumpulan kurungan dan mod tidak tamak, kami boleh menangani pelbagai situasi secara fleksibel dan mengekstrak maklumat yang diperlukan. Dalam pembangunan sebenar, menggunakan ungkapan biasa boleh meningkatkan kecekapan dan kadar kejayaan padanan rentetan.

Atas ialah kandungan terperinci Ungkapan Biasa PHP: Bagaimana untuk mengekstrak berbilang subrentetan daripada rentetan. 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