У меня есть массив регулярных выражений, и я пытаюсь просмотреть текстовый документ, чтобы найти первый шаблон, назначить его в качестве ключа к массиву, затем продолжить поиск второго шаблона и назначить его как значение. Всякий раз, когда я сталкиваюсь с шаблоном 1, я хочу, чтобы он всегда назначался как ключ, и все совпадения шаблона 2, которые следуют, пока я не найду новый ключ, будут назначены этому первому ключу в качестве значений.
Структура текстового документа:
Subject: sometext
Email: [email protected]
source: www.google.com www.stackoverflow.com www.reddit.com
Итак, у меня есть массив выражений:
$expressions=array(
'email'=>'(\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b)',
'url'=>'([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)'
);
Я хочу прокрутить свой текстовый документ и сопоставить адрес электронной почты, затем назначить его в качестве ключа для массива, а затем назначить все URL-адреса, которые следуют, как значения, s вывод для приведенного выше текста будет:
array(
'[email protected]' => array (
0 => 'www.google.com',
1 => 'www.stackoverflow.com',
2 => 'www.reddit.com'
)