PHP で角かっこで囲まれたテキストを抽出する
PHP で角かっこ内のテキストをキャプチャするという課題には、微妙なアプローチが必要です。 /[.*?]/ を正規表現として使用する一般的な試みでは、最初のインスタンスのみが取得され、不完全な結果が残ります。
エンクロージャのキャプチャ:
この制限を克服するには、テキスト全体を角かっこで囲む正規表現を利用します。次のパターンを考えてみましょう。
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches);
ここで、/[1]/ は、角括弧で囲まれた任意の文字列に対応する正規表現として機能します。キャレット文字 (^) は文字列の先頭と一致し、その後に括弧が続きます。 2 部分は括弧ではない文字を表します。アスタリスク () は任意の数の出現に一致し、末尾の括弧でパターンが終了します。
指定されたテキストに対してこの正規表現を実行すると、次の結果が得られます:
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
内部のテキストのキャプチャ:
または、括弧なしのテキスト。これには、変更された正規表現が必要です。
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches);
この正規表現では、(3*) は角括弧内の任意の文字をキャプチャし、出力から角括弧を効果的に削除します。
Array ( [0] => This [1] => test [2] => eat [3] => shorts )
この正規表現は、テキスト内で角かっこがネストされていないことを前提としていることに注意してください。
以上がPHP正規表現を使用して角括弧で囲まれたテキストを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。