首頁 > 後端開發 > php教程 > 如何分解帶有嵌入引號(包括轉義引號和百分比編碼引號)的字串?

如何分解帶有嵌入引號(包括轉義引號和百分比編碼引號)的字串?

Susan Sarandon
發布: 2024-12-21 08:58:10
原創
412 人瀏覽過

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

使用嵌入引號分解字串

在處理引號內的文字時,使用標準explode() 函數分解字串可能會出現問題。為了達到將引用的單字視為單一實體的預期結果,需要更複雜的方法。

使用正規表示式

正規表示式為此任務提供了強大的解決方案。以下正規表示式符合帶引號的字串,允許轉義引號:

"(?:\.|[^\"])*"|\S+
登入後複製

此模式可與preg_match_all() 一起使用,從字串中提取帶引號和不帶引號的單字:

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

結果陣列將包含所需的輸出:

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

解釋

正規表示式模式由兩部分組成:

  • 引用的字串:用雙引號括起來,它允許使用轉義引號\.
  • 非引號單字:匹配任何非空白字元序列。

非捕獲組 (?:...) 確保轉義引號不會被捕獲為單獨的匹配項。

處理百分比編碼引號

如果您的字串包含百分比編碼的引號而不是雙引號,請將正規表示式修改為:

%22(?:\.|(?!%22).)*%22|\S+
登入後複製

以上是如何分解帶有嵌入引號(包括轉義引號和百分比編碼引號)的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板