首頁 > 後端開發 > php教程 > 使用PHP的explode()時如何將引用的文字保留為單字?

使用PHP的explode()時如何將引用的文字保留為單字?

Mary-Kate Olsen
發布: 2024-12-07 13:01:12
原創
432 人瀏覽過

How to Preserve Quoted Text as Single Words When Using PHP's explode()?

在PHPexplode 中將引用的單字視為單字

我們如何使用explode()分解字串,如下所示將引用字串的文字保留為單字?

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor
登入後複製

預期輸出:

["Lorem", "ipsum", "dolor sit 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);
登入後複製

解:

為了準確地將引用的單字捕獲為單一實體,我們可以利用preg_match_all():

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

這種精煉的語法甚至可以處理帶引號的短語中的轉義引號。

正規表示式細分:

"(?:         # Start non-capture group 1
  \        #   Match backslash character
  .         #   Match any character except line breaks
  |         #   Or
  [^\"]    #   Match any character except backslash and double quotes
)*          # End non-capture group 1 and repeat it zero or more times
"           # Match double quotes
|           # Or
\S+         # Match one or more non-whitespace characters
登入後複製

處理「而不是Double引號:

如果需要處理"取代雙引號,請使用此調整後的正規表示式:

preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);
登入後複製

以上是使用PHP的explode()時如何將引用的文字保留為單字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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