Страница справочника preg_match () объясняет, как работает $matches
. Это необязательный параметр, который заполняется результатами любого вложенного выражения в скобках из вашего регулярного выражения в порядке их совпадения. $matches[0]
- это всегда полное совпадение выражения, за которым следуют подвыражения.
Так, например, этот шаблон содержит два подвыражения, ([\w_-]*@[\w-\.]*)
и ([\w_-]*@[\w-\.]*)
. Части, соответствующие этим двум выражениям, будут помещены в $matches[1]
и $matches[2]
соответственно. Я думаю, что после быстрого взгляда, что для адреса электронной почты Random Stranger <email@domain.com>
, у вас будет что-то вроде этого в $matches
:
Array(
0 => "Random Stranger <email@domain.com>",
1 => "Random Stranger",
2 => "email@domain.com"
)
Думайте об этом как о передаче массива с именем $matches
по ссылке, который заполняется всеми подобранными частями.
Edit - обратите внимание, что вы используете флаг PREG_OFFSET_CAPTURE
, который изменяет поведение заполнения $matches
, поэтому ваш результат не будет соответствовать моему примеру. Руководство объясняет, как этот флаг также влияет на захват. В этом случае вместо набора совпадающих подвыражений вы получаете многомерный массив каждого выражения с той позицией, в которой он был найден в строке.