preg_match_all возвращает массивы

Недавно я сделал небольшой скрипт для перехвата любых URL-адресов, которые проходят через текстовую область на основе отправки формы.

Я использую регулярное выражение:

'/([\w]+).(local|test|stage|live).site.example.com/'

и если представить:

<p>body</p> <p>uk2.local.site.example.net 
training.test.site.example.net</p>
<p>www.google.com</p>
<p>sd2.test.site.example.net</p>

я возвращаюсь с массивом, который содержит:

0   =>  array(3
  0   =>    uk2.local.site.example.net
  1   =>    training.test.site.example.net
  2   =>    sd2.test.site.example.net
)
1   =>  array(3
  0   =>    local
  1   =>    test
  2   =>    test
)

Я не уверен, почему я получаю второй массив и хотел его очистить.


person GaxZE    schedule 02.03.2015    source источник
comment
Он соответствует материалу в скобках, он называется подшаблоном: php.net/manual/ ru/regexp.reference.subpatterns.php   -  person musse1    schedule 02.03.2015
comment
Спасибо. имеет смысл.   -  person GaxZE    schedule 02.03.2015


Ответы (1)


Используйте группу без захвата, также избегайте точек:

 '/(\w+)\.(?:local|test|stage|live)\.site\.example\.com/'
 // here __^^
person Toto    schedule 02.03.2015