Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Membahagikan Rentetan kepada Perkataan Sambil Mengekalkan Frasa Petikan?

Bagaimanakah Saya Boleh Membahagikan Rentetan kepada Perkataan Sambil Mengekalkan Frasa Petikan?

Linda Hamilton
Linda Hamiltonasal
2024-12-12 16:20:09818semak imbas

How Can I Split a String into Words While Keeping Quoted Phrases Intact?

Memisahkan Rentetan sambil Memelihara Frasa Petikan

Tugasnya adalah untuk meletupkan rentetan yang diberikan ke dalam susunan perkataan, dengan keperluan unik yang dipetik frasa dianggap sebagai unit tunggal.

Untuk mencapai matlamat ini, satu pendekatan melibatkan penggunaan biasa padanan ungkapan. Corak yang sesuai untuk menangkap kedua-dua frasa yang dipetik dan perkataan individu ialah:

"(?:\.|[^\"])*"|\S+

Corak ini terdiri daripada dua bahagian yang dipisahkan oleh operator gantian (|):

  1. "(?: \.|[^\"])*": Ini sepadan dengan rentetan yang disertakan dalam petikan berganda ("). Ia juga mengambil kira petikan yang dilepaskan () dalam teks yang dipetik menggunakan kumpulan bukan menangkap 1.
  2. S : Ini sepadan dengan satu atau lebih aksara bukan ruang putih, yang mewakili perkataan individu.

Untuk menggunakan corak ini dalam PHP, seseorang boleh menggunakan preg_match_all(...):

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\.|[^\"])*"|\S+/', $text, $matches);

Ini akan isikan tatasusunan $matches dengan tatasusunan semua padanan yang ditangkap, di mana frasa yang dipetik akan diasingkan sebagai elemen tunggal.

Sebagai contoh, dengan rentetan input yang disediakan:

Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor

Output bagi preg_match_all(...) akan menjadi:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )
)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Rentetan kepada Perkataan Sambil Mengekalkan Frasa Petikan?. 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