Как извлечь несколько шаблонов из TXT документа - PullRequest
1 голос
/ 27 июля 2010

У меня есть текстовый документ, в котором перечислены URL с их темой и адресом электронной почты. Мне нужно извлечь все URL с их темой и адресом электронной почты и поместить все это в CSV-файл. Мне просто нужно знать, как я могу использовать регулярные выражения для этого. В настоящее время я могу извлечь все URL, но мне нужен адрес электронной почты и тема, связанная с ними. Это то, с чем я работаю до сих пор:

$file=file_get_contents('/data/urls.txt');
$pattern='([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}))?)';
preg_match_all($pattern, $file, $matches);

$matches=array_unique($matches[0]);

print_r($matches);

Структура файла:

Тема: URL

Электронная почта: someemail@email.com

Исходный URL: http://www.google.com

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Нечто подобное может работать для вас, это зависит от того, как вы применяете термин «уникальный» к своему входу.

// reformat file
$pattern = '/Subject: (.*)[\n\r]+Email: (.*)[\n\r]+Source URL: (.*)[\n\r]*/';
$replace = '$1, $2, $3'."\n";
$output = preg_replace($pattern, $replace, $input);

// filter unique
$arr = explode("\n", $output);
$arr = array_unique($arr);

// output
$f = fopen('path.csv', 'w');
foreach($arr as $a) {
    fwrite($f, $a);
}
fclose($f);
1 голос
/ 27 июля 2010

Как насчет этого регулярного выражения?

$pattern='/(Subject: (.*)\n\nEmail: (.*)\n\nSource URL: (.*))/';
...