首頁 >後端開發 >php教程 >如何在 PHP 中提取帶引號的子字串,忽略轉義引號?

如何在 PHP 中提取帶引號的子字串,忽略轉義引號?

Barbara Streisand
Barbara Streisand原創
2024-11-29 12:54:17702瀏覽

How Can I Extract Quoted Substrings in PHP, Ignoring Escaped Quotes?

在PHP 正規表示式中排除轉義引號

在PHP 中,擷取單引號或雙引號括號的子字串需要仔細注意轉義序列。要忽略符合字串中的轉義引號,我們可以使用高階正規表示式。

考慮以下程式碼:

$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code);
$code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);

這些正規表示式符合引號之間的子字串,但無法排除轉義引號。為了解決這個問題,我們採用更全面的正規表示式模式:

建議的正規表示式:

  • 雙引號子字串:

    "[^"\\]*(?:\\.[^"\\]*)*"/s
  • 單引號子字串:

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

這些正規表示式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許任何非表達式允許轉義字符,包括轉義字符(例如, "n" 和 "t"),以及轉義轉義序列 ("")。

解釋:

  • [^"\\]* 符合零個或多個非引號或反斜線字元。
  • (?:\\.[^"\\]*)* 符合任意數量的轉義字元字元後面跟著非引號或反斜線字元。
  • s 修飾符啟用單行匹配,這是跨越多行所必需的。

透過合併這些正規表示式,您可以準確地提取在帶有引號的字串中包含轉義字元的子字串。

以上是如何在 PHP 中提取帶引號的子字串,忽略轉義引號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn