Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Meletupkan Rentetan dengan Sebut Harga Terbenam, Termasuk Sebut Harga Terlepas dan Peratusan Dikodkan?

Bagaimanakah Saya Boleh Meletupkan Rentetan dengan Sebut Harga Terbenam, Termasuk Sebut Harga Terlepas dan Peratusan Dikodkan?

Susan Sarandon
Lepaskan: 2024-12-21 08:58:10
asal
452 orang telah melayarinya

How Can I Explode a String with Embedded Quotations, Including Escaped and Percent-Encoded Quotes?

Meletup Rentetan dengan Petikan Terbenam

Meletup rentetan menggunakan fungsi explode() standard boleh menjadi masalah apabila berurusan dengan teks dalam tanda petikan. Untuk mencapai hasil yang diinginkan dalam menganggap perkataan yang dipetik sebagai entiti tunggal, pendekatan yang lebih canggih diperlukan.

Menggunakan Ungkapan Biasa

Ekspresi biasa menyediakan penyelesaian yang berkuasa untuk tugas ini . Regex berikut sepadan dengan rentetan yang dipetik yang membenarkan petikan yang dilepaskan:

"(?:\.|[^\"])*"|\S+
Salin selepas log masuk

Corak ini boleh digunakan dengan preg_match_all() untuk mengekstrak kedua-dua perkataan yang dipetik dan tidak dipetik daripada rentetan:

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

Tatasusunan yang terhasil akan mengandungi yang dikehendaki output:

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

Penjelasan

Corak regex terdiri daripada dua bahagian:

  • Rentetan yang dipetik: Dilampirkan dalam petikan berganda, ia membenarkan petikan melarikan diri menggunakan \.
  • Perkataan tanpa petikan: Memadankan sebarang jujukan aksara bukan ruang putih.

Kumpulan bukan tangkap (?:...) memastikan bahawa petikan yang dilepaskan tidak ditangkap sebagai padanan berasingan.

Mengendalikan Peratus Dikodkan Petikan

Jika rentetan anda mengandungi petikan berkod peratus dan bukannya petikan berganda, ubah suai regex kepada:

%22(?:\.|(?!%22).)*%22|\S+
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meletupkan Rentetan dengan Sebut Harga Terbenam, Termasuk Sebut Harga Terlepas dan Peratusan Dikodkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan