首頁  >  文章  >  後端開發  >  如何使用 PHP 從字串中提取方括號內的文字?

如何使用 PHP 從字串中提取方括號內的文字?

Barbara Streisand
Barbara Streisand原創
2024-11-26 20:29:10704瀏覽

How Can I Extract Text Enclosed in Square Brackets from a String Using PHP?

在PHP 中捕獲方括號內的文字

在程式設計中,我們經常遇到需要從較大的字串中提取特定數據的情況。一個常見的場景是捕獲方括號內的文本,如提供的範例所示:

[This] is a [test] string, [eat] my [shorts].

目標是將這個字串轉換為數組:

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]

雖然基本像/[.*?]/ 這樣的正規表示式似乎就足夠了,它只捕捉方括號的第一個實例。為了達到我們想要的輸出,我們需要一種修改的方法。

正規表示式解:

我們可以使用 preg_match_all 和修改後的正規表示式來符合其中出現的所有文字方括號。以下程式碼完成此動作:

preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);

此程式碼使用下列正規表示式:

  • /[/: 符合左方括號。
  • [^]]*: 符合除結束方塊之外的所有字元括號。
  • /]/: 符合右邊括號。

刪除括號的替代方法:

如果我們想要提取不含括號的文本,可以修改正規表示式略:

preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);

此程式碼使用:

  • /[/:匹配左方括號。
  • ( [^]]*): 捕捉除結束方塊之外的所有字元括號。
  • /]/: 符合右邊括號。

使用「*」量詞的第三個選項:

另一種雖然速度較慢的方法是使用「*」量詞代替"[^]":

preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);

透過使用這些正則表達式,我們可以有效地捕捉方括號內的文本,為我們提供初始問題陳述中所述的所需輸出。

以上是如何使用 PHP 從字串中提取方括號內的文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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