我有一個大.txt
文件,其中包含這樣大量的文字一定的模式中提取數據案例googledotcom
)轉換成新文件。結果應該用新行分隔(或至少使用一個製表符)。從.txt文件
我在網上找過,找不到一個簡單的方法來做到這一點。我可能已經錯誤地標記了這個問題,只是因爲我不確定如何完成此操作,感謝您的幫助。
我有一個大.txt
文件,其中包含這樣大量的文字一定的模式中提取數據案例googledotcom
)轉換成新文件。結果應該用新行分隔(或至少使用一個製表符)。從.txt文件
我在網上找過,找不到一個簡單的方法來做到這一點。我可能已經錯誤地標記了這個問題,只是因爲我不確定如何完成此操作,感謝您的幫助。
正如評論所說,你可以使用正則表達式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()
(整個文件一次,如果它相對較小)。然後用正則表達式分析它並將結果寫入新文件。
$text = file('file.txt') ;
foreach ($text as $value) {
if (preg_match('/"([^"]+)"/', $value, $match)) {
$domains[] = $match[1];
}
}
file_put_contents("domains.txt", implode("\n", $domains));
這可能涉及正則表達式,因此不容易做到這一點。搜索正則表達式 –
是「大.txt文件」中新行中的每個數據域?你的意思是'大'?是的,最簡單的方法 - >請給我們從該文件更長的樣本.... – sinisake
調查http://www.php.net/preg_match – anurupr