PHP:在文本文件中的每个 $num 单词后插入换行符

bor*_*ork 1 php text-files

我想通过在每 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);



?>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我创建了一个 for 循环和两个 if 语句来“计算”单词之间的间距,当变量counter达到 3 时,将插入换行符。但它不起作用,因为首先没有将网站上的数据打印到文本文件中。但是,如果我删除 for 循环和 if 语句,当然没有排序,它就会起作用。任何类型的帮助都是appriced!

编辑:更新的代码。

编辑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");

?>
Run Code Online (Sandbox Code Playgroud)

spl*_*h58 5

使用一些数组函数

$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";
Run Code Online (Sandbox Code Playgroud)

结果

one two three four
five six seven eight
nine ten eleven tweleve
thirteen fourteen
Run Code Online (Sandbox Code Playgroud)