簡體   English   中英

PHP:在文本文件中的每個$ num詞后插入換行符

[英]PHP: Insert line break after every $num word in a text file

我想通過在每第4個字后插入一個換行符來清理.txt文件,以使其更具可讀性。 該文件已填充了數組中的數據。

這是我想出迄今通過看這個這個

<?php
require "simple_html_dom.php";

$html = file_get_html("http://www.lipsum.com/");

$data = array();
$counter = 0;


foreach($html->find("div") as $tr){
    $row = array();
    foreach($tr->find("div") as $td){
        $row[] = $td->plaintext;
    }
     $data[] = $row;

    }


ob_start();
var_dump($data);

$data = preg_replace('~((\w+\s){4})~', '$1' . "\n", $data);
file_put_contents('new_text_file.txt', $data);


//$handlefile = fopen("newfile.txt", "w") or die("Unable to open file!");
//file_put_contents('newfile.txt', $data);
//$output = ob_get_clean();
//$outputFile = "newfile.txt";


//fwrite($handlefile, $output);
//fclose($handlefile);



?>

如您所見,我創建了一個for循環和兩個if語句來“計算”單詞之間的間距,並且當counter變量達到3時,將插入一個換行符。 但這是行不通的,因為首先沒有任何網站數據被打印到文本文件中。 但是,如果我刪除了for循環和if語句,而沒有進行排序的話,它將起作用。 任何類型的幫助都可以申請!

編輯:更新的代碼。

編輯2:最終的工作版本。 原始問題留待進一步參考。

這是最終的工作版本:

<?php
require "simple_html_dom.php";

$html = file_get_html("http://www.lipsum.com/");
$data = array();
$counter = 0;


foreach($html->find("div") as $tr){
    $row = array();
    foreach($tr->find("div") as $td){
        $row[] = $td->plaintext;
    }
     $data[] = $row;

    }


ob_start();
var_dump($data);
$handlefile = fopen("newfile.txt", "w") or die("Unable to open file!");
file_put_contents('newfile.txt', $data);
$output = ob_get_clean();
$outputFile = "newfile.txt";
fwrite($handlefile, $output);
fclose($handlefile);

function MakeFileReadable($source , $export) {

    $content = file_get_contents($source);
    $x = explode (" " , $content);

    $newx = "";
    $count = 1;
    foreach ($x as $word) {
        $newx .= $word . " ";
        if ($count %12 ==0) $newx .= "\r\n";
        $count ++;
    }

    $fp = fopen("file-export.txt" , 'w');
    if (!$fp) die("There is a problem with opening file...");
    fwrite($fp , $newx);
    fclose($fp);

}

MakeFileReadable("newfile.txt" , "file-export.txt");

?>

使用一些數組函數

$string = "one two three four five six seven eight nine ten eleven tweleve thirteen fourteen";

$arr = explode (" " , $string);
$lines = array_chunk($arr,4);
foreach($lines as $line) 
   echo implode (" ", $line)."\r\n";

結果

one two three four
five six seven eight
nine ten eleven tweleve
thirteen fourteen

這是一個正則表達式解決方案。

<?php
$test = 'one two three four five six seven eight nine ten eleven tweleve thirteen fourteen';
echo preg_replace('~((\w+\s){4})~', '$1' . "\n", $test);

輸出:

one two three four 
five six seven eight 
nine ten eleven tweleve

\\w是單詞字符(字母數字加“ _”, http://en.wikipedia.org/wiki/Regular_expression ),如果只想讓AZ使用[az]並使用i修飾符使其不區分大小寫, ~((\\w+\\s){4})~i \\s是一個空格, {4}要求出現4個\\w+\\s

根據您的代碼...

$data = preg_replace('~((\w+\s){4})~', '$1' . "\n", $data);
file_put_contents('new_text_file.txt', $data);

http://php.net/manual/zh/function.file-put-contents.php

每個更新的代碼:

<?php
require "simple_html_dom.php";
$html = file_get_html("http://www.lipsum.com/");
$data = array();
$counter = 0;
foreach($html->find("div") as $tr){
    $row = array();
    foreach($tr->find("div") as $td){
        $row[] = $td->plaintext;
    }
    $data[] = $row;
}
$data = preg_replace('~((\w+\s){4})~', '$1' . "\n", implode(' ', $data));
file_put_contents('new_text_file.txt', $data, FILE_APPEND | LOCK_EX);

最終測試的代碼:

    <?php
function MakeFileReadable($source , $export) {

    $content = file_get_contents($source);
    $x = explode (" " , $content);

    sort($x);
    $newx = "";
    $count = 1;
    foreach ($x as $word) {
        $newx .= $word . " ";
        if ($count %4 ==0) $newx .= "\r\n";
        $count ++;
    }

    $fp = fopen($export , 'w');
    if (!$fp) die("There is a problem with opening file...");
    fwrite($fp , $newx);
    fclose($fp);

}

MakeFileReadable("file-input.txt" , "file-export.txt");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM