2014-02-16 1 views
-1

У меня есть большой .txt файл, который содержит много текста, как это:Извлечение данных с помощью определенного шаблона из файла .txt

data-domain="googledotcom" 

Итак, я хочу, чтобы извлечь все, что в кавычках (в этом case googledotcom) в новый файл. Результаты должны быть разделены новой строкой (или, по крайней мере, с вкладкой).

Я смотрел онлайн и не мог найти простой способ сделать это. Возможно, я неправильно заметил этот вопрос, потому что я не знаю, как это сделать, спасибо за помощь.

+0

Это может быть связано с регулярным выражением, поэтому нет простого способа сделать это. Поиск regex –

+0

- это каждая область данных в новой строке в «большом .txt-файле»? И что вы подразумеваете под «большим»? И да, самый простой способ -> пожалуйста, дайте нам более длинный образец из этого файла .... – sinisake

+0

посмотрите на http://www.php.net/preg_match – anurupr

ответ

2

Как уже упоминалось в комментариях, вы можете использовать preg_match_all() регулярное выражение для этого:

<?php 
header('Content-Type: text/plain; charset=utf-8'); 

$test = <<<STR 
xxx 
data-domain="test1" 
yyy data-domain="test2" 
zzz 
data-domain="test3" 
STR; 

$results = preg_match_all('/data\-domain\=\"(.+)\"/', $test, $matches); 

print_r($matches[1]); 
?> 

Результаты:

Array 
(
    [0] => test1 
    [1] => test2 
    [2] => test3 
) 

Зависит от размера файла, вы должны прочитать его fopen() + fread() (строка в каждом конкретном строка, если она большая) или file_get_contents() (весь файл сразу, если он относительно небольшой). Затем проанализируйте его с помощью регулярного выражения и напишите результаты в новый файл.

3
$text = file('file.txt') ; 
foreach ($text as $value) { 
    if (preg_match('/"([^"]+)"/', $value, $match)) { 
     $domains[] = $match[1]; 
    } 
} 
file_put_contents("domains.txt", implode("\n", $domains)); 
Смежные вопросы