Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menulis Ungkapan Biasa PHP untuk Mengabaikan Petikan Terlepas Dalam Rentetan Petikan?

Bagaimana untuk Menulis Ungkapan Biasa PHP untuk Mengabaikan Petikan Terlepas Dalam Rentetan Petikan?

Barbara Streisand
Barbara Streisandasal
2024-11-28 00:48:12161semak imbas

How to Write a PHP Regular Expression to Ignore Escaped Quotes Within Quoted Strings?

PHP: Ungkapan Biasa untuk Mengabaikan Petikan yang Dilepaskan dalam Petikan

Dalam senario ini, anda bertujuan untuk mengubah suai ungkapan biasa sedia ada yang mengekstrak rentetan yang disertakan dengan petikan tunggal (') atau berganda (") untuk mengabaikan petikan yang terlepas dalam petikan tersebut. Matlamatnya adalah untuk membenarkan data antara petikan tunggal untuk mengabaikan petikan tunggal yang terlepas (') dan data antara petikan berganda untuk mengabaikan petikan berganda yang terlepas (").

Penyelesaian:

Untuk mencapai ini, anda boleh menggunakan ungkapan biasa berikut, dioptimumkan untuk kecekapan:

Petikan Berganda Rentetan:

"[^"\\]*(?:\\.[^"\\]*)*"/s

Rentetan Petikan Tunggal:

/'[^'\\]*(?:\\.[^'\\]*)*'/s

Penjelasan:

Rentetan biasa ini ungkapan terdiri daripada yang berikut komponen:

  • 1*: Memadankan mana-mana aksara yang bukan petikan berganda (") atau garis serong ke belakang ().
  • (?:\.2): Memadankan aksara yang dilepaskan ( diikuti oleh mana-mana bukan- petikan, watak bukan segaris belakang).
  • s: Mendayakan titik (.) aksara untuk dipadankan dengan baris baharu.

Dengan menggabungkan corak ini, regex berkesan menangkap rentetan yang dipetik sambil mengabaikan petikan yang terlepas.

Contoh Kod PHP:

$re_dq = '/"[^"\\]*(?:\\.[^"\\]*)*"/s';
$re_sq = "/'[^'\\]*(?:\\.[^'\\]*)*'/s";

$code = preg_replace_callback($re_dq, array($this, '_getPHPString'), $code);
$code = preg_replace_callback($re_sq, array($this, '_getPHPString'), $code);

Kod ini kini akan mengeluarkan rentetan yang dipetik dengan betul, mengabaikan melarikan petikan dalam diri mereka.


  1. "\
  2. "\

Atas ialah kandungan terperinci Bagaimana untuk Menulis Ungkapan Biasa PHP untuk Mengabaikan Petikan Terlepas Dalam Rentetan 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