По умолчанию preg_match_all
всегда возвращает полностью совпадающую строку в качестве первого элемента (используя тип заказа PREG_PATTERN_ORDER
).
Из документов для PREG_PATTERN_ORDER
:
Упорядочивает результаты так, что $ match [0] - это массив полных совпадений с шаблоном, $ match 1 - это массив строк, сопоставленных с первым подшаблоном в скобках, и т. Д.
Если вы ищете значение группы захвата, проверьте значение по индексу 1, а затем используйте ссылку на группу захвата в качестве податрибута.
Например, группа захвата1 будет: $matches[ 1 ][ 0 ]
Чтобы изменить это поведение, вы можете передать в качестве третьего аргумента константу, такую как PREG_SET_ORDER
, которая "Заказывает результаты так, что $ match [0] является массивом первогонабор совпадений, $ match 1 - массив второго набора совпадений и т. д. "