Почему моё регулярное выражение выдаёт 2 значения в массиве, а не одно?

Camillo

Новичок
Почему моё регулярное выражение выдаёт 2 значения в массиве, а не одно?

Вот выражение которое я использую
preg_match("/<tag>(.+)<\/tag>/", $string, $arr);

почем после выполнения массив $arr
содержит 2 значения?

$arr[0] = <tag>blablabla</tag>
$arr[1] = blablabla

Как видоизмениит выражение чтобы в массиве было бы только значение вида $arr[1]
 

white phoenix

Новичок
Никак. Элемент с индексом 0 это охваченная подстрока, а затем идут подмаски в порядке возрастания слева направо.
Для того чтобы убрать первый элемент:
PHP:
$arr = array_slice($arr,1);
 

Camillo

Новичок
white phoenix, спасибо за разъяснение

еще маленький вопросик:
например, я хочу получить массив значений из <tag></tag> и <tag></tag2>. Можно ли это сделать за одно не действие?

т.е чтобы не делать
preg_match("/<tag>(.+)<\/tag>/", $string, $arr1);
preg_match("/<tag2>(.+)<\/tag2>/", $string, $arr2);

а потом "складывать" массивы $arr1, $arr2

Спасибо...
 
Сверху