Regex untuk Mengendalikan Petikan yang Dilepaskan Dalam Petikan
Menggunakan rentetan dalam PHP boleh memberikan cabaran, terutamanya apabila berurusan dengan aksara yang mempunyai makna istimewa, seperti petikan yang melarikan diri. Untuk menghuraikan rentetan secara berkesan dan mendapatkan semula kandungannya, adalah penting untuk mencipta corak regex yang mengabaikan petikan yang dilepaskan yang terkandung dalam diri mereka sendiri.
Corak Regex Diubahsuai
Untuk menangani keperluan untuk mengabaikan petikan yang terlepas, corak regex yang diubah suai boleh digunakan. Regex yang dipertingkatkan mempertimbangkan semua aksara yang dilepaskan, bukan hanya petikan.
Pilihan 1: Teknik Nyahgulung-Gelung
Pertimbangkan corak regex berikut:
"[^"\\]*(?:\.[^"\\]*)*"
Corak ini menggunakan teknik "membuka-gelung" Friedl. Ia mengenal pasti dengan cekap semua aksara yang bukan petikan yang dilepaskan (bahagian pertama corak) dan membenarkan aksara yang dilarikan dengan menggunakan pengendali ?:.
Pilihan 2: Pengkuantiti Posesif dan Kumpulan Atom
Sebagai alternatif, anda boleh menggunakan pengkuantiti posesif atau kumpulan atom untuk mencipta yang lebih cekap regex:
/"([^"\]++|\.)*"/
/"((?>[^"\]+)|\.)*"/
Kaedah ini menjadikan corak regex lebih pantas, membolehkan pemprosesan rentetan yang lebih cekap.
Pelaksanaan PHP
Untuk PHP, corak regex yang disyorkan untuk petikan berganda dan tunggal ialah:
$re_dq = '/"[^"\\]*(?:\\.[^"\\]*)*"/s'; $re_sq = "/'[^'\\]*(?:\\.[^'\\]*)*'/s";
Dengan menggunakan corak regex yang dikemas kini ini, anda boleh menghuraikan rentetan dengan berkesan dalam PHP, mengabaikan petikan yang terlepas semasa menangkap data yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Regex untuk Mengendalikan Petikan yang Dilepaskan dalam Petikan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!