$matches = array();
$matchcount = preg_match('/\[([^\]]*)\]/', $string1, $matches);
$item_inside_brackets = $matches[1];
Если вы хотите сопоставить несколько терминов в квадратных скобках в одной строке, вам нужно рассмотреть preg_match_all
вместо просто preg_match
.
И да, регулярные выражения являются довольно многоязыковым стандартом (есть некоторые различия в том, какие функции доступны на разных языках, и иногда синтаксические различия, но по большей части это все одно и то же).
Объяснение вышеприведенного регулярного выражения:
/ # beginning of regex delimiter
\[ # literal left bracket (normally [ is a special character)
( # start capture group - isolate the text we actually want to extract
[^\]]* # match any number of non-] characters
) # end capture group
\] # literal right bracket
/ # end of regex delimiter
Содержимое массива $matches
устанавливается на основе как всей совокупности текста (который будет включать в себя скобки) в [0], так и затем содержимого каждой группы захвата из сопоставления в [1] и up (содержимое первой группы захвата в [1], второе в [2] и т. д.).