2016-11-23 3 views
2

Я в настоящее время работает preg_match_all на строке, которая ищет номера телефонов, используя регулярные выражения. Когда он находит совпадение, он учитывает положение смещения внутри строки.preg_match_all многомерный массив выходного цикла? PHP

preg_match_all Пример:

preg_match_all('/\b\/?\d?[-.]?\s?\(?\d{3}\)?\s?[-.]?\d{3}[-.]?\d{4}\b/', $string, $matches, PREG_OFFSET_CAPTURE); 

Использование print_r

echo print_r($matches, true).BR; 

Выходы:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => 666.666.6666 
        [1] => 1190 
       ) 

      [1] => Array 
       (
        [0] => 555-555-5555 
        [1] => 1206 
       ) 

     ) 

) 

Проблема: Как прокручивать спички и эхо-номер и позицию смещения?

+0

Не могли бы вы предоставить свой входной строки? –

+0

Строки, которые я просматриваю, являются содержимым тела электронной почты и слишком длинны для публикации здесь и являются частными письмами. Все совпадения и все такое хорошо, мне просто нужно знать, как я могу перебирать массив данных, который он находит в приведенном выше примере. таким образом я могу сохранить как число, так и его позицию смещения в переменных или базу данных, если это необходимо. – Meta

ответ

1

Вы можете использовать цикл Еогеасп:

foreach ($matches[0] as $match) { // use first array item to loop through since the matches are in its sub-array 
    echo "Number = " . $match[0] . " | Offset = " . $match[1] . "\r\n"; 
} 

Выход:

Number = 666.666.6666 | Offset = 1190 
Number = 555.555.5555 | Offset = 1206 
+0

Я сделал точный цикл foreach в моем коде, но, судя по всему, моя неудача не была специально нацелена на $ match [0] и $ match [1] - Спасибо! – Meta

+0

Добро пожаловать. Рад, что это помогло. – JazZ

+0

@Meta Не возражаете ли вы, чтобы я спросил, почему вы не нацелились на них правильно? Вы показали вывод 'print_r()', он четко идентифицирует их таким образом. Как кто-то, кто тратит огромное количество времени на ответы на вопросы новичков здесь, мне интересно, что ментальный блок состоит в том, чтобы получить такие вещи, когда вы можете видеть это прямо перед вашими глазами. – Barmar

Смежные вопросы