角かっこで囲まれたテキストをキャプチャする方法が必要です。たとえば、次の文字列:
[This] is a [test] string, [eat] my [shorts].
次の配列の作成に使用できます。
Array (
[0] => [This]
[1] => [test]
[2] => [eat]
[3] => [shorts]
)
私は次の正規表現を持っています、/\[.*?\]/
ただし、最初のインスタンスのみをキャプチャするため、次のようになります。
Array ( [0] => [This] )
必要な出力を取得するにはどうすればよいですか?角括弧は入れ子にならないため、心配する必要はありません。
角かっこで囲まれたすべての文字列に一致します。
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);
括弧なしの文字列が必要な場合:
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);
括弧のない代替の低速バージョン(「[^]」の代わりに「*」を使用):
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);