首頁 >後端開發 >php教程 >如何將字串拆分為單詞,同時保留引用的短語?

如何將字串拆分為單詞,同時保留引用的短語?

Susan Sarandon
Susan Sarandon原創
2024-12-06 02:59:171010瀏覽

How to Split a String into Words While Preserving Quoted Phrases?

如何按單字分割字串,保留引用的文字

對於給定字串"Lorem ipsum "dolor sat amet" consectetur "adipiscing elit “dolor”,我們尋求一種將其分解為陣列的方法,同時保持引用短語的完整性。使用提供的代碼:

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);

導致單字被拆分。為了解決這個問題,我們利用正規表示式:

$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
        )

)

解釋:

正則表達式可以分解為它的組成部分:

  • `" #匹配雙引號字元("
  • (?: # 開始非捕獲組1
  • # 匹配反斜線字元()
  • . # 匹配換行符之外的任意字元
  • |# OR
  • 1 # 匹配除and 以外的任何字元"
  • )* # 結束非捕獲組1 並重複零次或多次
  • " # 匹配雙引號字元("
  • | # OR
  • S # 比對一個或多個非空白字元

  1. "
"

以上是如何將字串拆分為單詞,同時保留引用的短語?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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