1

So i'm trying to write this php script to output differences in text files. Here is my code so far:

<?php
header('Content-type: text/plain');
$file1 = "list2.txt";
$file2 = "list1.txt";
$lines1 = file($file1, FILE_IGNORE_NEW_LINES);
$lines2 = file($file2, FILE_IGNORE_NEW_LINES);
$result = array_diff($lines2, $lines1);
print_r($result);
?>

I want this to echo out just the leftover words without the [0] => on every line, i just want the word, not the numbering. I've tried using "pre" tags and it doesn't work.

4

6 回答 6

1

print_r主要用于调试目的,而不是显示。你可以做

foreach($result as $r) print($r);

或者

echo join(' ',$result);

于 2013-07-02T17:22:23.530 回答
1

使用implodejoin函数

echo implode("\n", $result);

或者

echo join("\n", $result);
于 2013-07-02T17:25:18.843 回答
0

你可以使用带有break html标签的php函数内

像下面

echo implode('<br>', $result);

让我知道我是否可以为您提供更多帮助。

于 2013-07-02T17:22:42.683 回答
0

Print_r(和 var_dump)主要用于调试输出。对于您的差异,您想做类似的事情

print implode(PHP_EOL,$result);

如果您的输出标头是 text/plain,则 HTML 标签不会呈现为 HTML,而是会在页面中显示为文本。

于 2013-07-02T17:24:04.043 回答
0

您需要一个接一个地获取数组元素。然后使用它。so 一个接一个地获取每个元素您可以使用 foreach:like

foreach($result as $x)
{
   echo $x;
}
于 2013-07-02T17:31:26.733 回答
0

处理大文件时使用文件可能效率不高......

$a = "list1.txt";
$b = "list2.txt";

$fpA = fopen($a, "r");
$fpB = fopen($b, "r");

$i = 0;

while(! feof($fpA)) {
    $i ++;
    $x = trim(fgets($fpA));
    $y = trim(fgets($fpB));
    if ($x !== $y) {
        printf("#%d: %s<br />\n", $i, $y);
    }
}

输出

#8: 2cc021a8f87e1defeb5d0a1d43a0FFFFF
于 2013-07-02T17:33:00.997 回答