2014-02-16 188 views
-1

我有一個大.txt文件,其中包含這樣大量的文字一定的模式中提取數據案例googledotcom)轉換成新文件。結果應該用新行分隔(或至少使用一個製表符)。從.txt文件

我在網上找過,找不到一個簡單的方法來做到這一點。我可能已經錯誤地標記了這個問題,只是因爲我不確定如何完成此操作,感謝您的幫助。

+0

這可能涉及正則表達式,因此不容易做到這一點。搜索正則表達式 –

+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));